reactjs - 我可以在屏幕上的多个位置重用组件的单个实例以做出反应吗?
问题描述
我有这个应用程序,我正在用 react-native 编写,我有这个屏幕,它显示大约 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>
解决方案
您可以将组件提取Menu
到您自己的自定义组件中,然后在您的卡片中重复使用它。这意味着您只需要定义Menu
一次,然后多次使用该组件(这将为Menu
每张卡创建一个单独的实例,彼此独立运行)。
你也可以对你的Card
组件做同样的事情,这意味着你不必多次定义相同的东西。将使您的代码更干净,更有用(您在组件中定义的方法将仅针对该组件的该实例执行,而不是在全局级别上,因为您的上述代码将 - 例如this._closeMenu
将仅针对Menu
它定义的实例执行)
在这里查看如何提取和重用您的组件 - https://caster.io/lessons/react-native-extracting-and-writing-react-native-components
推荐阅读
- java - 在 Fragment 中返回后如何通过 URL 更改图像颜色
- r - R ggplot:如何格式化x轴以使第一个标签与后续标签不同
- firefox-addon - 无法与本机消息传递主机 (firefox) 通信
- jquery - 尝试使用 jQuery 预加载网页时出现“TypeError: e is null”
- python - 如何使用 Python 执行 SSIS ETL 包
- python - 使用“if in”时元素现有标识错误
- c# - 从 Microsoft Store 将 Edge Extensions 集成到 Webview UWP
- java - 给出 0 到 15 之间的值,返回 4 个 CheckBoxes 之间的正确选择
- xml - 查找并替换为星号字符
- android - Google Developer Console 内部测试、Beta 版和 Alpha 版