在渲染函数中设置状态是一个好的解决方案吗?
Is setting state inside render function an ok solution?
我正在一些位于 render() 内部的组件中设置状态,我想知道这是否是设置状态的好方法:
<TextInput style={{ fontSize: 14, marginLeft: 10, marginRight: 10, color: 'black', borderColor: 'gray', borderWidth: 1, textAlignVertical: 'top' }}
onChangeText={(txt) => this.setState({ waitReason: txt })}
autoFocus
multiline={true}
numberOfLines={3}
placeholderTextColor='gray'
placeholder='Comment'
value={this.state.waitReason} />
或者调用一个函数然后在该函数内设置状态可能是更好的解决方案?!
是的,可以在渲染中设置状态,尤其是在处理用户输入时。
就像在本机反应中一样 documentation
render 中的 setState 没有问题,但为了维护标准代码,应该使用诸如 handleChange 之类的函数,或者当需要在特定事件上设置状态时使用 on click 函数。
请记住,您不是在实际渲染中设置状态。您正在事件处理程序中渲染组件和设置状态。因此,在您的代码中,仅在调用 onChangeText
处理程序时才执行重新渲染,这仅在文本更改时发生。
你的方法应该没问题。分离到不同的函数不会改变代码的性能,但可能会使其更易于维护。
您的方法在 React Native documentation 本身中被广泛用作示例。
我正在一些位于 render() 内部的组件中设置状态,我想知道这是否是设置状态的好方法:
<TextInput style={{ fontSize: 14, marginLeft: 10, marginRight: 10, color: 'black', borderColor: 'gray', borderWidth: 1, textAlignVertical: 'top' }}
onChangeText={(txt) => this.setState({ waitReason: txt })}
autoFocus
multiline={true}
numberOfLines={3}
placeholderTextColor='gray'
placeholder='Comment'
value={this.state.waitReason} />
或者调用一个函数然后在该函数内设置状态可能是更好的解决方案?!
是的,可以在渲染中设置状态,尤其是在处理用户输入时。
就像在本机反应中一样 documentation
render 中的 setState 没有问题,但为了维护标准代码,应该使用诸如 handleChange 之类的函数,或者当需要在特定事件上设置状态时使用 on click 函数。
请记住,您不是在实际渲染中设置状态。您正在事件处理程序中渲染组件和设置状态。因此,在您的代码中,仅在调用 onChangeText
处理程序时才执行重新渲染,这仅在文本更改时发生。
你的方法应该没问题。分离到不同的函数不会改变代码的性能,但可能会使其更易于维护。
您的方法在 React Native documentation 本身中被广泛用作示例。