Javascript 如何从另一个组件更改组件状态?

Javascript 如何从另一个组件更改组件状态?,javascript,react-native,Javascript,React Native,我的applicationn中有一个ApplicationHeader组件,在App.js中调用 ApplicationHeader.js 导出默认类ApplicationHeader扩展组件{ 建造师(道具){ 超级(道具) 此.state={ loggedUser:null, } } render(){ 返回( ); } } MyApp.js呈现ApplicationHeader render() { return ( <SafeAreaView for

我的applicationn中有一个ApplicationHeader组件,在App.js中调用

ApplicationHeader.js

导出默认类ApplicationHeader扩展组件{
建造师(道具){
超级(道具)
此.state={
loggedUser:null,
}
}
render(){
返回(
);
}
}
MyApp.js呈现ApplicationHeader

  render() {

     return (
       <SafeAreaView forceInset={{ bottom: 'never'}} style={styles.container}>
         {Platform.OS === 'ios' && <StatusBar barStyle="default" />}
         <ApplicationHeader />
         <AppNavigator />
       </SafeAreaView>
     );

  }
将状态更改为props(或将props传递到构造函数中的状态)



关于道具的更多信息一般来说,答案是“向上传递数据”,因此您不会将其视为“从一个组件发送到另一个组件”,而是让一个组件向上运行状态树,以在组件树中向上传递身份验证状态


在您的示例中,您不会将状态存储在较低级别的对象中,只需将它们作为道具从较高的组件传递

经过一些尝试,我发现最好的方法是实现Redux

然后,对于Redux,我只使用了isLoggedUser道具,如下所示:

{!isLogged && ( <Image source={imgWishList} style = { AppStyle.headerWishlist}/>)}
{isLogged && ( <Image source={imgWishListLogged} style = { AppStyle.headerWishlist}/>)}
{!isloged&&()}
{isLogged&&()}

为什么要将其保持在
ApplicationHeader
状态?将其作为属性发送。或者使用上下文,或者使用状态管理系统。@DaveNewton在上述场景中,我如何通过这些类传递属性?当用户登录应用程序时,是否可以更改此属性?或者我只能设置一次?当属性更改时,组件将重新提交,但如何通过AppNavigator传递ApplicationHeader的实例(StackNavigator)和主页?只有App.js知道ApplicationHeader->App.js->ApplicationHeader和AppNavigator App Navigator->HomePage。。。
<Image source={this.props.loggedUser !== null ? imgWishListLogged : imgWishList} style = { AppStyle.headerWishlist}/>
<ApplicationHeader loggedUser={myVar} />
{!isLogged && ( <Image source={imgWishList} style = { AppStyle.headerWishlist}/>)}
{isLogged && ( <Image source={imgWishListLogged} style = { AppStyle.headerWishlist}/>)}