首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CodeSandbox中响应上下文

在CodeSandbox中响应上下文
EN

Stack Overflow用户
提问于 2020-08-12 18:50:54
回答 1查看 366关注 0票数 0

我对使用CodeSandbox的React有问题。

我的基本例子:

App.js

代码语言:javascript
复制
import React, { useEffect, useContext } from "react";
import { FirmsContext } from "./FirmsContext";

export default function App() {
const { firms, fetchFirms } = useContext(FirmsContext);

  useEffect(() => {
   (async function getFirms() {
    await fetchFirms();
   })();
  }, [fetchFirms, firms]);

return (
 <div>
 </div>
);
}

FirmsConext.js

代码语言:javascript
复制
import React, { createContext, useReducer } from "react";
import FirmsReducer from "./FirmsReducer";

// INIT STATE
const initalState = {
 firms: []
};

// CREATE CONTEXT
export const FirmsContext = createContext(initalState);

// PROVIDER COMPONANT
export const FirmsProvider = ({ children }) => {
 const [state, dispatch] = useReducer(FirmsReducer, initalState);

 async function fetchFirms() {
  try {
   let response = await fetch("https://pokeapi.co/api/v2/pokemon-species/");
    dispatch({
     type: "GET_FIRMS",
     payload: response.result
    });
  } catch (err) {
    console.log(err);
   }
 }

return (
  <FirmsContext.Provider
    value={{
      firms: state.firms,
      fetchFirms
    }}
  >
    {children}
  </FirmsContext.Provider>
);
};

FirmsReducer.js

代码语言:javascript
复制
export default (state, action) => {
 switch (action.type) {
  case "GET_FIRMS":
    return {
      ...state,
      loading: false,
      firms: action.payload
    };
  default:
    return state;
 }
};

我得到了以下错误:fetchFirms不是函数

这将显示在useEffect钩子上的app.js中。

代码语言:javascript
复制
   9 | 
  10 | useEffect(() => {
  11 |   (async function getFirms() {
> 12 |     await fetchFirms();
     |          ^
  13 |   })();
  14 | }, [fetchFirms, firms]);
  15 | 

我在其他地方有非常类似的代码工作正常,所以不确定这是CodeSandbox,还是我只是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-12 19:08:15

如果要使用提供程序提供的值,则需要使<App />成为<FirmsProvider />的后代,如下所示

代码语言:javascript
复制
<FirmsProvider>
  <App />
</FirmsProvider>

否则,您只会看到上下文创建时使用的初始值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63383001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档