reactjs - 如何从其他组件 React Native 更新主组件状态
问题描述
我正在制作一个登录页面。所以我用 islogin 声明一个状态。现在我确实检查了一个条件。如果 islogin false 则返回登录页面,否则将转到路由组件。
应用程序.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { createStackNavigator, createAppContainer } from "react-navigation";
import {AppNavigator} from './route-components/route';
import Login from './Components/login/login'
const AppContainer = createAppContainer(AppNavigator);
export default class App extends React.Component {
constructor(props){
super(props)
this.state ={
signin: false
}
}
render() {
if(this.state.signin){
return (
<AppContainer />
);
} else {
return (
<Login islogin={this.state.signin} change={this.change}/>
)
}
}
}
登录.js
import React from "react";
import { View, Text } from "react-native";
import { Button, WingBlank, WhiteSpace, InputItem } from 'antd-mobile-rn';
export default class Login extends React.Component {
constructor(props){
super(props);
this.state = {
signin: this.props.islogin
}
}
render(){
const {change} = this.props;
return(
<View style={style}>
<InputItem type="text" placeholder="Enter Username" >
</InputItem>
<WhiteSpace />
<InputItem type="text" placeholder="Enter Password" >
</InputItem>
<WhiteSpace />
<Button style={{margin: 10}} onClick={change}>Login</Button>
</View>
)
}
}
现在尝试当我点击登录按钮时,它将更改 app.js 状态并切换到 Route 组件
解决方案
您需要声明一个回调方法,该方法将更改 app.js 中的状态变量,并在登录组件中传递回调方法,然后从 onclick 事件中调用该方法。这是 app.js 的代码示例
userLogIn = () => this.setState({ signin: true });
<Login userLogIn={this.userLogIn} change={this.change}/>
并在 Login.js 中替换它
<Button style={{margin: 10}}
onClick={this.props.userLogIn}>Login
</Button>
推荐阅读
- neural-network - 使用 VGG16 架构的维度问题
- reactjs - 如何在 react-day-picker DayPickerInput 中添加图标
- java - spring boot 应用运行失败,报错不明确
- javascript - JavaScript中的正则表达式lookbhind
- mysql - 从表的每一列中获取所有不同的行及其计数
- ffmpeg - 如何在树莓派 4B 上启用对 H.264 编码的硬件支持
- c# - 有没有办法阻止 EF 插入 SQL Server 计算列?
- python - 简单聚类算法的numpy实现
- android - 如何将安卓应用程序连接到树莓派?
- .net - Automapper 将平面模型的列表映射到具有内部列表的复杂实体