在渲染函数中设置状态是一个好的解决方案吗?

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 本身中被广泛用作示例。