我已在redux reducer中设置了登录身份验证的初始状态。成功登录后,authError=null
说,我想更改它。当我单击注销时,我要设置authError = ''
。
我可以从组件更改为reducer的只读状态吗?
组件
const {authError} = this.props;
this.setState(authError = "")
减速器
const initState = {
authError : '',
empname : 'test', phoneno:'321'
}
const signin = (state = initState, action) => {
switch(action.type){
case 'SIGN_IN':
const empname = action.payload.empname;
const phoneno = action.cred.phoneno;
console.log('===============$$$=====================');
console.log(empname, phoneno);
console.log('===============$$$=====================');
return {
...state,
authError : null,
empname,
phoneno
}
}
答案 0 :(得分:1)
不,您不能在道具上叫setState
。由于道具用于在创建组件时自定义组件并为其提供不同的参数。
不同于道具,状态是一个私有功能,它严格属于单个组件。状态允许React组件响应某些事件而随着时间动态地更改输出。
reducer 是一个纯函数,它将以前的状态和操作作为参数并返回新的状态。
简而言之,Reducer以prop的形式将应用程序状态分配到适当的组件。如果要更改组件的prop值,则需要定义一个单独操作并在该操作中修改值,然后可以返回修改后的值。
您可以通过阅读this
轻松上手。