首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与组件共享变量

问如何与组件共享变量
EN

Stack Overflow用户
提问于 2020-09-15 15:45:08
回答 1查看 27关注 0票数 1

主应用程序如下所示:

代码语言:javascript
复制
import Cookies from 'js-cookie';
function App() {
let cookie = Cookies.get('mycookie');
return (
    <>
        <Router>
            <div>
                {<Switch>
                    <Route path="/comp1">
                        <Comp1 />
                    </Route>
                    <Route path="/comp2">
                        <Comp2 />
                    </Route>
                </Switch>
            </div>
        </Router>
    </div>
);
}

正如您所看到的,在主应用程序中,我正在读取cookie。现在,所有组件都需要访问cookie。我如何制作从主应用读取cookie的组件?当然,我可以使用"Cookies.get“来读取cookie。但由于我在App.js中做的不只是读取cookie,我更喜欢在App.js中做一次操作,然后与组件共享所有这些操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-15 15:55:54

你可以把它作为道具传给需要它的子孙。

代码语言:javascript
复制
import Cookies from 'js-cookie';

function App() {
  let cookie = Cookies.get('mycookie');
  return (
    <div>
      <Router>
        <div>
          {<Switch>
            <Route path="/comp1">
              <Comp1 cookie={cookie} />
            </Route>
            <Route path="/comp2">
              <Comp2 />
            </Route>
          </Switch>}
        </div>
      </Router>
    </div>
  );
}

在组件中通过props访问

代码语言:javascript
复制
const { cookie } = props;

或者,您可以使用上下文API并创建cookie上下文

代码语言:javascript
复制
export const CookieContext = React.createContext();

应用程序

代码语言:javascript
复制
import Cookies from 'js-cookie';

function App() {
  let cookie = Cookies.get('mycookie');
  return (
    <div>
      <Router>
        <div>
          <CookieContext.Provider value={cookie}>
            {<Switch>
              <Route path="/comp1">
                <Comp1 />
              </Route>
              <Route path="/comp2">
                <Comp2 />
              </Route>
            </Switch>}
          </CookieContext.Provider>
        </div>
      </Router>
    </div>
  );
}

在组件内部

代码语言:javascript
复制
import { CookieContext } from './CookieContext';

const cookie = useContext(CookieContext);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63897321

复制
相关文章

相似问题

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