這是我的代碼的摘錄:onLayout不會被調用
render() {
console.log("first log");
return (
<View onLayout={e => console.log("second log")}>
...
控制檯顯示「第一次登錄」,而不是第二個。該視圖似乎正確呈現。我嘗試了其他意見,但結果是一樣的。 我使用react-native 0.48.4。
這是我的代碼的摘錄:onLayout不會被調用
render() {
console.log("first log");
return (
<View onLayout={e => console.log("second log")}>
...
控制檯顯示「第一次登錄」,而不是第二個。該視圖似乎正確呈現。我嘗試了其他意見,但結果是一樣的。 我使用react-native 0.48.4。
剛更新爲react-native 0.48.4,我無法在iOS或Android上重現錯誤。然而,由於你不使用你的「E」,你也許應該更改代碼以
<View onLayout={() => console.log('second log')}>
甚至
<View onLayout={console.log("second log")}>
我解決了這個改變初始高度大於0,則onLayout函數成功當ChildView的佈局已更改時觸發。
constructor(props) {
super(props);
this.state = {
title: '',
height: 0 // changed to 1
};
}
onLayout = (event) => {
console.log('on layout:')
const {
x,
y,
width,
height
} = event.nativeEvent.layout;
console.log(x, y, width, height);
}
render() {
return (
<View style={[styles.container, {height: this.state.height}]}>
<View onLayout={this.onLayout}>
<ChildView/>
</View>
</View>
)
}
由於這一重大更改: 安卓:只有調用onLayout佈局時,實際上已經改變了 https://github.com/facebook/react-native/wiki/Breaking-Changes#android-only-call-onlayout-when-layout-has-actually-changed-15429e---astreet
感謝您的評論。我沒有寫清楚。我解決了問題沒有問一個新的問題。我昨天加入了stackoverflow以回答這個問題。做了編輯。希望它會幫助:) – Jiana