0
我查看層次:的TextInput中的setValue使onChangeText 「最大調用堆棧大小超出」
A extends Component {
render(this.props.innerView())
}
B extends Component {
render(
<A innnerView={this._renderInnerView}/>
)
}
而且我innerView包含一個TextInput。
在Android中,我的TextInput低於:
<TextInput
style={{flex: 1}}
autoCapitalize='none'
placeholder={strings.addLinkTitleHint}
keyboardType='default'
enablesReturnKeyAutomatically={true}
autoCorrect={false}
onChangeText={(text) => {
console.log("text : ", text);
if (this.state.modifyingTitle === text) {
return;
}
this.setState({
modifyingTitle: text
})
}}
underlineColorAndroid='rgba(0,0,0,0)'
value={this.state.modifyingTitle}
/>
我能得到一個時間的日誌信息,並秒鐘後,我得到「最大的調用堆棧大小超出了」錯誤。
我發現A中的渲染方法被調用很多次,但我不知道如何解決它。
我需要設置值到這個TextInput根據this.state.modifyingtitle,所以我只需要寫「value = {this.state.modifyingTitle}」並更新這個狀態onChangeText –
我的意思是我需要設置初始值TextInput –
也許拉出初始'modifyTitle的值'在組件構造函數中,並將其放入一個非狀態變量,並將其綁定到'value',以便它在更改時不會觸發'changeText'事件。 –