React native 子组件未与父组件一起呈现

React native 子组件未与父组件一起呈现,react-native,React Native,我的父组件是一个包含两个内容的屏幕: 过滤器按钮(开/关) 包含平面列表的子组件 父组件的简化(psuedo)代码如下: const mapStateToProps = state => ({ filterValueFromRedux: state.filterValueFromRedux, }); render() { return ( <TouchableOpacity onPress={() =>

我的父组件是一个包含两个内容的屏幕:

  • 过滤器按钮(开/关)
  • 包含平面列表的子组件
  • 父组件的简化(psuedo)代码如下:

    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
    更改