Javascript 在onChangeText make中输入设置值;超过最大调用堆栈大小;
我的视图层次结构:Javascript 在onChangeText make中输入设置值;超过最大调用堆栈大小;,javascript,react-native,Javascript,React Native,我的视图层次结构: A extends Component { render(this.props.innerView()) } B extends Component { render( <A innnerView={this._renderInnerView}/> ) } 扩展组件{ 渲染(this.props.innerView()) } B扩展组件{ 渲染( ) } 我的innerView包含一个TextInput 在Android中,我的
A extends Component {
render(this.props.innerView())
}
B extends Component {
render(
<A innnerView={this._renderInnerView}/>
)
}
扩展组件{
渲染(this.props.innerView())
}
B扩展组件{
渲染(
)
}
我的innerView包含一个TextInput
在Android中,我的文本输入如下:
<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}
/>
{
日志(“文本:”,文本);
if(this.state.modifyingTitle==文本){
返回;
}
这是我的国家({
修改标题:文本
})
}}
下生色类='rgba(0,0,0,0)'
值={this.state.modifyingTitle}
/>
我只能得到一次日志信息,几秒钟后,我得到“超过最大调用堆栈大小”错误
我发现A中的render方法被多次调用,但我不知道如何解决它。这可能与将值绑定到状态有关,而且
setState
是异步的(设置一个链,其中modifyingTitle
永远不等于text
。如果您的状态是组件的本地状态,您不必担心将输入的值绑定到状态,因为对输入的任何更改都应该反映在状态中(我想不出有什么方法可以使其不同步).我需要根据this.state.modifyingtitle为这个文本输入设置值,所以我只需要写“value={this.state.modifyingtitle}”并在onchangetext中更新此状态我的意思是我需要设置textInput的初始值可能会在组件构造函数中拉出modifyingTitle
的初始值,并将其放入非状态变量中,并将其绑定到值
,以便在更改时不会触发changeText
事件e总是那个变量,它是不可能的changed@yifan_z我面临着同样的问题…你有没有遇到任何解决方案?