【问题标题】:Why need I use this.props.user.user.displayName and not this.props.user.displayName? React为什么我需要使用 this.props.user.user.displayName 而不是 this.props.user.displayName?反应
【发布时间】:2019-01-07 21:27:12
【问题描述】:

我在尝试将我的 firebase 用户数据保存到 Redux 商店时遇到了一点问题,我已经尝试了很多方法来将数据保存在我的商店中:

const initialState = {
  logged: null,
  user: {}
};

在我的用户对象中,我想要来自我的 firebase 的所有数据。我这样发送数据:

firebase.auth().onAuthStateChanged(user => {
  if (user) {
    store.dispatch({
      type: "USER_LOGIN",
      payload: { user: { ...user.providerData[0] } }
    });
  } else {
    store.dispatch({ type: "USER_LOGOUT" });
  }
});

为什么我什么时候尝试访问需要使用的数据 this.props.user.user.displayName?对于这对用户,请注意,如果我只使用一个用户,我会收到未定义的(显然)。

【问题讨论】:

  • 试试payload: { ...user.providerData[0] }
  • 如果你想看看你得到了什么,也可以在你的if (user) { 之后做一个console.dir(user)
  • 啊,该死,谢谢兄弟。一小时尝试...
  • { ...user.providerData[0] } 工作得非常好。谢谢

标签: javascript reactjs firebase redux


【解决方案1】:
firebase.auth().onAuthStateChanged(user => {
  if (user) {
    store.dispatch({
      type: "USER_LOGIN",
      payload: user.providerData[0]
    });
  } else {
    store.dispatch({ type: "USER_LOGOUT" });
  }
});

这行得通吗?刚刚修改payload

【讨论】:

  • 是的,这是工作,但最好发送一个对象,像这样。 { ...user.providerData[0] }。我把你的答案设置为工作。谢谢!
  • 只是出于好奇,为什么最好发送{ ...user.providerData[0] }?当它完成与payload: user.providerData[0] 相同的事情时,计算量会更大。它还使用更多内存,创建一个浅拷贝。
  • 是吗?大声笑我不知道,我稍后会问在线教授它的老师。真的我是个菜鸟,我正在学习看别人的代码
  • 我在 Redux 中看到了很多。我认为这与stackoverflow.com/a/43153020/1512654有关
猜你喜欢
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 2013-12-07
  • 2014-08-08
  • 2010-10-13
  • 1970-01-01
相关资源
最近更新 更多