在this.props中访问prop时,返回值是否为空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在this.props中访问prop时,返回值是否为空?相关的知识,希望对你有一定的参考价值。

我创建了我的动作/减速器/商店等。当我将mapStateToPros传递给我的Shop组件时,我可以访问我的道具。特别是在这个组件上,我想使用this.props.auth来查找当前登录的用户。在用户上有一个isAdmin prop,默认情况下为false。当我调用this.props.auth.isAdmin时,它返回null。

在我的后端使用node / express / mongoDB

localhost error img

Shop Component top img

Shop Component bottom img

Actions for Reducer

Reducer

答案

鉴于您的减速机在这里https://i.stack.imgur.com/TRvKP.png的屏幕截图,我会尝试这样的事情:

// authReducer.js 
const initialState = 
  auth: 
    isAdmin: false,
  ,  
  isLoggedOn: false


// create a default schema for you state rather than defaulting to null 
export default function (state = initialState, action) 
  // the rest of your code

这将在auth reducer上设置初始redux状态,其方式符合组件的预期。

对于每个动作,FETCH_USERLOGOUT_USER,你会想要返回一个描述新状态的属性的对象,但是你现在已经设置了LOGOUT_USER返回false的地方,这是一种完全不同的数据格式(布尔值)然后我认为你是使用auth状态的表示(通常你想要一个对象)。

通过状态更改,一个常见且方便的模式是返回一个将旧状态与新状态合并的新对象,因此您最终可能会执行以下操作:

case LOGOUT_USER: 
  return  ...state, action.payload 

这可确保您的redux状态始终符合特定形状,并帮助您避免组件中的props的null / undefined错误。

从那里你可以发送一个动作,在不同的情况下将isAdmin属性更新为true。

以上是关于在this.props中访问prop时,返回值是否为空?的主要内容,如果未能解决你的问题,请参考以下文章

在 vue.js 组件中反应 this.props.children

在 Route 组件中访问 this.props.location.pathname

为啥我们需要在 ReactJS 中使用 bind() 来访问 this.props 或 this.state? [复制]

this.props 的神奇用法(路由传参)

nextProps 始终与 componentWillReceiveProps 中的 this.props 相同,即使 props 已更改

如何在 react-router v1.0.0 中填充 this.props.params?