React native 子组件未与父组件一起呈现
我的父组件是一个包含两个内容的屏幕:React native 子组件未与父组件一起呈现,react-native,React Native,我的父组件是一个包含两个内容的屏幕: 过滤器按钮(开/关) 包含平面列表的子组件 父组件的简化(psuedo)代码如下: const mapStateToProps = state => ({ filterValueFromRedux: state.filterValueFromRedux, }); render() { return ( <TouchableOpacity onPress={() =>
const mapStateToProps = state => ({
filterValueFromRedux: state.filterValueFromRedux,
});
render() {
return (
<TouchableOpacity
onPress={() => {
this.setState({xxxxx});
...also update redux value [filterValueFromRedux] here
}}>
<Text>Filter</Text>
</TouchableOpacity>
<View>
<MyFlatList
data={this.state.array}
filterValueFromRedux={this.props.filterValueFromRedux}
/>
</View>
);
}
const-mapStateToProps=state=>({
filterValueFromRedux:state.filterValueFromRedux,
});
render(){
返回(
{
这个.setState({xxxxx});
…同时在此处更新redux值[filterValueFromRedux]
}}>
滤器
);
}
子组件MyFlatList的简化(psuedo)代码如下:
render() {
return (
<FlatList
data={this.props.data}
renderItem={({item}) => {
......this.props.filterValueFromRedux.....is used here
}>
)
}
render(){
返回(
{
……这里使用的是.props.filterValueFromRedux
}>
)
}
当在父组件上按下过滤器按钮时,父组件的状态将更新,以便父组件重新加载。但是,即使修改了redux值[filterValueFromRedux](传递给子组件Net),子组件也不会重新渲染。
你知道为什么吗
p、 请尽量不要对psuedo代码的准确性产生疑虑(因为它可能并不完美)…我希望我们能够解决这样一个原则,即当孩子的父母这样做时(特别是当传递的道具之一正在改变时)在你的
看来,这个.props.data
没有改变,然后它不会自行更新项目原因FlatList
缓存,以防止不必要的重新加载。您可以将this.props.filterValueFromRedux
传递给它,告诉它在变量更改时重新渲染,或者做一些事情使this.props.data
更改