gpt4 book ai didi

reactjs - 从子组件更新父 React 组件

转载 作者:行者123 更新时间:2023-12-03 14:26:22 26 4
gpt4 key购买 nike

我正在使用 React context api 来随处显示我的数据,并从任何地方进行更新,我希望我的数据可以在多个屏幕上显示,并且我可以从多个需要全局使用的类进行更新。

当我尝试从类(class)个人资料屏幕更新它时,没有任何反应,但它可以从类(class)主屏幕更新。

如何在不使用这样的方式的情况下在消费者中显示我的数据,并在全局范围内显示此数据

const Context = React.createContext("default value")    
global.cart = 1;

作为上下文提供者类的主屏幕类

class HomeScreen extends Component<Props> {
constructor(props){
super(props);
this.state={
contextData:5}}
render() {
return (
<View>
<Context.Provider value={this.state.contextData}>
<Button title="Increment" onPress={++global.cart;
this.setState({contextData:global.cart})}/>
</Context.Provider>
<ProfileScreens/>
</View>
)
}
}

我需要在多个屏幕中使用和显示的文本

class ProfileScreen extends Component<Props> {
render() {
return (
<View style={{}}>
<Context.Consumer>
{data=> <Text style={{fontSize:50}}>{data.toString()}</Text>}
</Context.Consumer>
</View>
);
}
}

另一个正在更改上下文提供程序数据的类

class ProfileScreens extends Component<Props> {
constructor(props){
super(props);
this.state={contextData:5}}
render() {
return (
<View >
<Context.Provider value={this.state.contextData}>
<ProfileScreen/>
<Button title="decrementss" onPress={()=>{ ++global.cart;
this.setState({contextData:global.cart})}}/>
</Context.Provider>
</View>
);
}
}

最佳答案

您需要将回调从 HomeScreen 传递到 ProfileScreens此回调将在 ProfileScreens 内调用并触发 HomeScreen 状态更改:

主屏幕中:

...
<ProfileScreens changeHomeScreen={() => this.setState({...})}/>
...

然后在ProfileScreens中:

...
<Button title="decrementss" onPress={()=>{ this.props.changeHomeScreen() }}/>
...

关于reactjs - 从子组件更新父 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52675979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com