Могу ли я повторно использовать один экземпляр компонента в нескольких местах на экране в реакции?

У меня есть это приложение, которое я пишу на реагирующем языке, где у меня есть этот экран, который отображает около 50-100 изображений и некоторые кнопки действий, связанные с ними, включая всплывающее меню (по одному, связанное с каждым из них). Есть ли способ, которым я могу использовать одно и то же всплывающее меню (один и тот же экземпляр) для всех изображений?

             <View>
             // react-native-paper Card Component
               <Card style={styles.card}>
                <Card.Content style={styles.cardContent}>
                  <Card.Cover
                    style={{ height: 60, width: 60 }}
                    source={
                      item.avatar ||
                      (item.gender === 'male'
                        ? require('../../assets/male.jpeg')
                        : require('../../assets/female.jpeg'))
                    }
                  />
                  <Caption style={styles.title}>{item.name}</Caption>
                </Card.Content>
                <Card.Actions>
                  <Avatar.Text
                    style={{ backgroundColor: 'skyblue' }}
                    size={24}
                    label={`#${item.id}`}
                  />
                 // react-native-paper Menu Component
                 // can i somehow use a single component for all cards?
                  <Menu
                    visible={this.state.visible}
                    onDismiss={this._closeMenu}
                    anchor={
                      <IconButton
                        icon="menu"
                        theme={theme}
                        size={20}
                        onPress={() => console.log('Pressed')}
                      />
                    }
                  >
                    <Menu.Item onPress={() => {}} title="Item 1" />
                    <Menu.Item onPress={() => {}} title="Item 2" />
                    <Divider />
                    <Menu.Item onPress={() => {}} title="Item 3" />
                  </Menu>
                </Card.Actions>
              </Card>
                  .
                  .
          //same card multiple times
                  .
                  .
             </View>

1 ответ

Вы можете извлечь Menu компонент в свой собственный компонент, а затем использовать его в своих картах. Это означает, что вам нужно только определить свой Menu один раз, а затем использовать этот один компонент несколько раз (что создаст отдельный экземпляр Menu для каждой карты, действующей независимо друг от друга).

Вы также можете сделать то же самое для вашего Card компонент, который означает, что вам не нужно определять одно и то же несколько раз. Сделает ваш код намного чище и удобнее (ваши методы, которые вы определили в своих компонентах, будут выполняться только для этого экземпляра компонента, а не на глобальном уровне, как ваш код выше - например, this._closeMenu будет выполняться только для Menu экземпляр, в котором это определено)

Узнайте, как можно извлечь и повторно использовать ваши компоненты - https://caster.io/lessons/react-native-extracting-and-writing-react-native-components

Другие вопросы по тегам