首页 > 解决方案 > 如何修复“无法读取未定义的属性”?

问题描述

我该如何解决这个错误?我已经尝试过,但仍然无法做到。

TypeError: Cannot read property 'user' of undefined
App
C:/Users/Bogosyna/Desktop/IT job projects/roro-facebook/src/App.js:11
   8 | import {useStateValue} from "./StateProvider";
   9 | 
  10 | function App() {
> 11 |   const [{ user }, dispatch] = useStateValue();
  12 | 
  13 |   return (
  14 |     <div className="app">

这是 useStateValue() 的实现

import React, { createContext, useContext, useReducer } from "react";

export const StateContext = createContext();

export const StateProvider = ({ reducer, initialState, children}) => (
    <StateContext.Provider value={useReducer(reducer, initialState)}>
        {children}
    </StateContext.Provider>
);

export const useStateValue = () => useContext(StateContext);

标签: javascriptreactjsfirebase

解决方案


您是否尝试过提供initialStateuser对象?

initialState = {
  user: {},
}

然后将其传递给useReducer(reducer, initialState).

如果这不是您可以做的事情,那么不要这么早解构用户,有这样的事情:

const [values, dispatch] = useStateValue();

console.log(values.user) // See when the user is available

或为用户提供初始空对象,如下所示:

const [{user} = {}, dispatch] = useStateValue();

推荐阅读