javascript - 组件的单个实例反应原生
问题描述
我想制作一个呈现模态的组件。这个组件应该有states{Key(integer),ImageLink(string),Visible(bool)}
. 我正在使用flatlist
. 我想在 flatlist 父级但组件上呈现组件的模式。触摸平面列表子时,状态会发生变化。
例如:
模态组件,意思是单实例
import React from "react";
import {
View,
Modal,
Text,
StyleSheet,
TouchableHighlight,
Platform
} from "react-native";
export default class MySingleInstanceModal extend Component{
constructor(props) {
super(props);
this.state = {
Visiable: props.Visiable, \\Bool For turning Modal On or Off
ImageLink: props.ImageLink, \\String Image Online Link
Key: props.PostKey,\\integer Key
};
}
NextImage = (Current,Link )=> {
this.setState({ ImageLink: Link,Key:Current+1 });
};
ToggleMeOff = () => {
this.setState({ TurnMeOn: false });
};
ToggleMeOn = (MyKey,MyLink) => {
this.setState({ TurnMeOn: true,ImageLink: MyLink,Key:MyKey });
};
PrevImage = (Current,Link )=> {
this.setState({ ImageLink: Link,Key:Current-1 });
};
render() {
return (
<View>
<Modal
animationType="slide"
transparent={false}
visible={this.state.TurnMeOn}
>
<View style={{ marginTop: 22 }}>
<View>
<Text>Hello World!</Text>
<TouchableHighlight onPress={this.ToggleMeOff}>
<Text>Hide Modal</Text>
</TouchableHighlight>
<Image
source={{ uri: this.state.ImageLink }}
resizeMethod={"resize"}/>
</View>
</View>
</Modal>
</View>
);
}
}
调用 Flatlist 父级:
render() {
return (
<View style={Style1.container}>
<MySingleInstanceModal/> // Here I want to call render
<FlatList
data={data}
initialNumToRender={4}
keyExtractor={this._keyExtractor}
renderItem={this._renderItem}
onEndReached={this._reachedEnd}
refreshing={isRefreshing}
onEndReachedThreshold={0.5}
onRefresh={this._refreshdata}
ListFooterComponent={this.renderFooter}
/>
</view>)
}
并且想states
改变MySingleInstanceModal
in flatlist items
( flatlist child
)
在平面列表子项的渲染中的某处
render(){
return (
...
<TouchableHighlight onPress={() =>
MySingleInstanceModal.ToggleMeOn(this.state.Link,this.state.Key)}>
<Text>Open Modal For Me</Text>
</TouchableHighlight>
...
)
}
这意味着组件将在父级呈现,但其状态将由子级控制(每个平面列表项)
解决方案
推荐阅读
- laravel - 将 Whatsapp 按钮插入 Laravel 6
- facebook - 结果/转化的 Facebook API 指标
- powerbi-desktop - 如何一次将表格的所有列添加到报表中
- linux - 屏幕作为 systemd 上的服务无法启动
- json - 请自动 API 调用 Binance :)
- .net - Oracle REST 数据服务是否与 .NET CORE 兼容?
- python - 如何/我可以通过网络服务器控制我的 python 代码输入?
- android - Navigation Controller (Managing Backstack) Jetpack Android
- activex - Chilkat Rest - How authorized with certificate
- vue.js - VueJS-3 如何渲染
从Vue路由器?