Javascript 为什么我不能从react上下文访问变量?你能辨认出错误吗?

Javascript 为什么我不能从react上下文访问变量?你能辨认出错误吗?,javascript,arrays,reactjs,react-context,Javascript,Arrays,Reactjs,React Context,我想从react上下文访问一个名为“currentNode”的数组,但它似乎不起作用。控制台错误消息如下所示: 未处理的拒绝(TypeError):无法读取null的属性“0” 似乎无法从上下文访问currentNode变量。 你能辨认出错误吗?非常感谢您的帮助 步骤1:以下是代码,以及如何将其分派到上下文: const AuthState = (props) => { // auth state: create initial authState const initialSta

我想从react上下文访问一个名为“currentNode”的数组,但它似乎不起作用。控制台错误消息如下所示:

未处理的拒绝(TypeError):无法读取null的属性“0”

似乎无法从上下文访问currentNode变量。 你能辨认出错误吗?非常感谢您的帮助

步骤1:以下是代码,以及如何将其分派到上下文:

const AuthState = (props) => {
  // auth state: create initial authState
  const initialState = {
    isAuthenticated: false,
    chatId: null,
    currentNode: [],
  };

const fetchCurrentNode = async (chatId) => {
    try {
      const config = {
        headers: {
          "x-auth-token": "",
        },
      };

      const res1 = await axios.get(
        `http://localhost:4001/api/chatbots/${chatId}/nodeid`,
        //`https://mybot.uber.space/api/chatbots/${chatid}`
        //`https://sandbox.as.wiwi.uni-goettingen.de/teachr/chatbots/pin/${pin}`
        config
      );
      
      dispatch({
        type: NEW_CURRENT_NODE_CREATED,
        payload: currentNode,
      });
    } catch (error) {
      console.error(error);
    }
  };

return (
    <ChatContext.Provider
      value={{
        chatId: state.chatId,
        chat: state.chat,
        chatSessionId: state.chatSessionId,
        createChatSessionId,
        addBackendAnswerToChat,
        addUserInputToChat,
        resetChat,
        fetchEventAnswerFromDialogflow,
        fetchAnswerFromDialogflow,
      }}
    >
      {props.children}
    </ChatContext.Provider>
  );
};
步骤2:以下是我如何将其保存为类型:

export const NEW_CURRENT_NODE_CREATED = "NEW_CURRENT_NODE_CREATED";
步骤3:这是我的减速器功能:

 import { CHATID_FETCH_SUCCESSFUL, NEW_CURRENT_NODE_CREATED } from "./authTypes";
    
    export default (state, action) => {
      switch (action.type) {
        case NEW_CURRENT_NODE_CREATED:
          return {
            ...state,
            isAuthenticated: true,
            currentNode: [action.payload],
          };
        default:
          return state;
      }
    };
步骤4:下面是我想如何访问currentNode变量:

 import AuthContext from "../../Context/Auth/authContext";

const authContext = useContext(AuthContext);
  const { chatId, currentNode } = authContext;

  console.log(chatId);
  console.log(currentNode);

您没有向上下文值添加您试图使用的值

return (
    <ChatContext.Provider
      value={{
        chatId: state.chatId,
        chat: state.chat,
        currentNode: state.currentNode, // <-- ADD THIS LINE
        chatSessionId: state.chatSessionId,
        createChatSessionId,
        addBackendAnswerToChat,
        addUserInputToChat,
        resetChat,
        fetchEventAnswerFromDialogflow,
        fetchAnswerFromDialogflow,
      }}
    >
      {props.children}
    </ChatContext.Provider>
  );
};
返回(

您的上下文声明和提供程序用法在哪里?感谢您的提及,我在上面添加了它。我看不到您在哪里更新了
currentNode
,或者使用了来自axios的
res1
。我看不到将
currentNode
传递给您的提供程序的值
return (
    <ChatContext.Provider
      value={{
        chatId: state.chatId,
        chat: state.chat,
        currentNode: state.currentNode, // <-- ADD THIS LINE
        chatSessionId: state.chatSessionId,
        createChatSessionId,
        addBackendAnswerToChat,
        addUserInputToChat,
        resetChat,
        fetchEventAnswerFromDialogflow,
        fetchAnswerFromDialogflow,
      }}
    >
      {props.children}
    </ChatContext.Provider>
  );
};