我有以下代碼:爲什麼我不能從ReactDOM.render()回調中獲得對組件的引用?
const priceCalculator = ReactDOM.render(<PriceCalculator />, reactHolder);
我需要在我的代碼後使用priceCalculator
但ESLint抱怨,我不應該使用的ReactDOM.render()
返回值。那是當我發現你可以pass a 3rd argument到ReactDOM.render()
這是一個回調。太好了,我以爲......
ReactDOM.render(<PriceCalculator />, reactHolder, function(priceCalculator) {
// do something with priceCalculator
});
但priceCalculator
是不確定的。在調試器中,我暫停異常,並發現this
設置爲我的React組件,當我在這個函數中。所以我重寫它...
ReactDOM.render(<PriceCalculator />, reactHolder, function() {
const priceCalculator = this;
// do something with priceCalculator
});
它仍然是未定義的。這是怎麼回事?
我正在使用Webpack編譯es6 React代碼(使用babel)。
'ReactDOM.render'呈現給定的組件到給定的DOM元素中。我相信回調是在完成渲染時調用的。也許你想要的只是'const priceCalculator = '? –
sdgluck
@sdgluck這是我做的第一個,它工作正常。然而,這種方式是不鼓勵的,因爲最終ReactDOM.render可能不會返回任何東西https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-render-return-value.md – MrMisterMan
但是,我建議不使用'ReactDOM.render',所以這些細節不適用於此? – sdgluck