子组件更新时更改父状态

约翰·多亚

我有一个主要组件,它有两个子组件,一个flat list和一个button group组件(来自react-native-elements)。

我想flat list在用户点击其中一个button group选项更新数据,但是,我无法真正弄清楚这一点,我尝试使用回调,但是无法真正理解它们的工作原理,因此不适用于我。这是我的主要组成部分:

return (
  <SafeAreaView style={styles.homeContainer}>
    <View style={{flex: 1}}>
      <View style={styles.headerContainer}>
        <View
          style={{
            display: 'flex',
            flexDirection: 'row',
            justifyContent: 'space-between',
            alignItems: 'center',
          }}>
          <Text style={styles.title}>Groups</Text>
          <Avatar
            rounded
            source={{
              uri: profilePhotoURL,
            }}
          />
        </View>
        <Text style={styles.subtitle}>Find people to learn with</Text>
      </View>

      <OptionChooser /> {/** <---- this is the button group component*/}
      
      <FlatList
        data={meetings}
        renderItem={({item}) => (
          <TouchableOpacity
            style={styles.cardButton}
            onPress={() =>
              navigation.navigate('MeetingDetails', {meeting: item})
            }>
            <MeetingCard meetingModel={item} style={{flex: 1}} />
          </TouchableOpacity>
        )}
        keyExtractor={(item) => item.id!}
        showsVerticalScrollIndicator={false}
      />
    </View>

    <FloatingButton onPress={() => navigation.navigate('AddMeeting')} />
  </SafeAreaView>
);

这是我的按钮组(OptionChooser)组件:

  const OptionChooser = () => {
  const [selectedIndex, setSelectedIndex] = useState<number>(0);
  const buttons = ['All', 'Today', 'This week'];

  const updateIndex = (index) => {
    setSelectedIndex(index);
    console.log(index);
  };

  return (
    <View style={styles.buttonGroupContainer}>
      <ButtonGroup
        onPress={updateIndex}
        selectedIndex={selectedIndex}
        buttons={buttons}
        containerStyle={{height: 44, borderRadius: 4}}
        selectedButtonStyle={{backgroundColor: '#8BCFB0'}}
      />
    </View>
  );
};

我的目标是在updateIndex调用时OptionChooser更新flat list父组件中的。

古拉帕兰·吉里塔兰(Guruparan Giritharan)

如您所说,在这种情况下,回调将是最简单的选择。

让我们从您的父组件开始。假设您有两个状态变量会议,selectedIndex

使子组件变得笨拙并管理父组件中的状态而不是同时管理两者中的状态始终是一个好主意。

您的父级将具有setSelectedIndex,它将更新父级selectedIndex状态。

所以您将状态和功能传递给孩子,如下所示

<OptionChooser selectedIndex={selectedIndex} setSelectedIndex={setSelectedIndex}/>

您的子组件必须像这样

const OptionChooser = ({selectedIndex,setSelectedIndex}) => {
  const buttons = ['All', 'Today', 'This week'];
  return (
    <View style={styles.buttonGroupContainer}>
      <ButtonGroup
        onPress={setSelectedIndex}
        selectedIndex={selectedIndex}
        buttons={buttons}
        containerStyle={{height: 44, borderRadius: 4}}
        selectedButtonStyle={{backgroundColor: '#8BCFB0'}}
      />
    </View>
  );
};

在渲染中,您可以使用如下所示的状态简单地过滤会议

<FlatList data={meetings.filter(x=>x.type==selectedIndex)} ...

//实际情况可能会根据您的需要而有所不同。

因此,无论您的孩子何时更改,更改都会反映在父级中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

父状态更新时更新子组件

来自分类Dev

父状态更新时更新子组件

来自分类Dev

父组件状态更新时,子组件的道具不更新

来自分类Dev

当父组件的状态更新时,React 子组件不会更新

来自分类Dev

如果父状态值更改,如何更新子组件

来自分类Dev

响应子组件在父状态更改后不更新

来自分类Dev

父状态更改时子组件不会更新

来自分类Dev

子组件未因父状态更改而更新

来自分类Dev

更改子组件变量时更新父组件

来自分类Dev

通过父级更改状态时更新子道具

来自分类Dev

父状态不更新子组件

来自分类Dev

父状态更改后,组件不会更新

来自分类Dev

单击带有React JS中特定键的子组件时更改父组件的状态

来自分类Dev

父级状态更改后,子级组件道具未更新

来自分类Dev

如何从功能组件的父级更改子状态组件

来自分类Dev

在子组件中更改服务变量时,父组件中的服务变量未更新

来自分类Dev

React:使用异步数据更新父组件的子组件状态

来自分类Dev

状态更改后子组件未更新

来自分类Dev

当父状态改变时,如何更新(重新渲染)React中的子组件?

来自分类Dev

父组件更新时,子组件不会更新

来自分类Dev

更改状态时避免组件更新

来自分类Dev

VueJS:更改子组件内的数据并更新父组件的数据。

来自分类Dev

根据子组件中父组件状态的更改,在父组件上执行代码

来自分类Dev

当父状态在React中更改时停止渲染子组件

来自分类Dev

从React中的子组件更改父状态(无Redux)

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

ReactJS:子组件在设置父状态之前更新

来自分类Dev

如何从reactJS中的子组件更新父状态

来自分类Dev

React:使用子复选框更新父组件的状态

Related 相关文章

  1. 1

    父状态更新时更新子组件

  2. 2

    父状态更新时更新子组件

  3. 3

    父组件状态更新时,子组件的道具不更新

  4. 4

    当父组件的状态更新时,React 子组件不会更新

  5. 5

    如果父状态值更改,如何更新子组件

  6. 6

    响应子组件在父状态更改后不更新

  7. 7

    父状态更改时子组件不会更新

  8. 8

    子组件未因父状态更改而更新

  9. 9

    更改子组件变量时更新父组件

  10. 10

    通过父级更改状态时更新子道具

  11. 11

    父状态不更新子组件

  12. 12

    父状态更改后,组件不会更新

  13. 13

    单击带有React JS中特定键的子组件时更改父组件的状态

  14. 14

    父级状态更改后,子级组件道具未更新

  15. 15

    如何从功能组件的父级更改子状态组件

  16. 16

    在子组件中更改服务变量时,父组件中的服务变量未更新

  17. 17

    React:使用异步数据更新父组件的子组件状态

  18. 18

    状态更改后子组件未更新

  19. 19

    当父状态改变时,如何更新(重新渲染)React中的子组件?

  20. 20

    父组件更新时,子组件不会更新

  21. 21

    更改状态时避免组件更新

  22. 22

    VueJS:更改子组件内的数据并更新父组件的数据。

  23. 23

    根据子组件中父组件状态的更改,在父组件上执行代码

  24. 24

    当父状态在React中更改时停止渲染子组件

  25. 25

    从React中的子组件更改父状态(无Redux)

  26. 26

    React:子组件未在父状态更改时呈现

  27. 27

    ReactJS:子组件在设置父状态之前更新

  28. 28

    如何从reactJS中的子组件更新父状态

  29. 29

    React:使用子复选框更新父组件的状态

热门标签

归档