现在我有一个父组件里面有一个this.state.title, 这个title在我onClick的操作进行refetch数据时会得到改变,然而父组件并不会render,我现在有一个子组件接受this.state.title,并想在输入框中显示这个title,我可以编辑他,最后在子组件中点击button save这个信息。然而我发现每次父组件refetch,子组件的输入框的字符串并不会更新。
子组件的相关代码是这样的
type Props = {|
productSortTitle: string,
|}
state = {
productSortTitle: this.props.productSortTitle,
};
<TextInput
onChange={this._handleProductSortTitleChange}
value={this.state.productSortTitle}
/>
_handleProductSortTitleChange = event => {
this.setState({productSortTitle: this._sanitizeProductSortTitle(event)});
};
我觉得是因为子组件并没有re-render, 即使props改了它也接受不到。
完全的react新人。。。希望大神指教,百度了一下发现有这种玩法,也是我之前一直做的:
在React中,父子组件间的通信是通过props来传递参数的。一般情况下,父组件传一个值给子组件,同时还要传一个修改该值的方法函数。这样,在子组件中调用这个方法函数才能修改该值,并再次传给子组件,从而修改子组件状态。
但是觉得好绕,因为我这个productSortTitle的操作和save都是在子组件里进行的,可以的话并不想传回父组件,想请问一下有没有其他方法可以使子组件rerender呢?
知道shouldComponentUpdate,写了个
shouldComponentUpdate(nextProps: Props) {
return nextProps.productSortTitle !== this.props.productSortTitle;
}
加进去发现并无改变,T T
父组件不
render
,子组件肯定是无法获取到从父组件传入的props
的。只有让那个
props
与父组件无关,直接通过connect
与redux
的state
相关。