项目中页面功能内使用的邮箱是用context统一下发的,但是页面拿不到下发的value,获取到的值为undefined
//原先的代码:
<CurrnetUserContext.Provider value={() => currentUser}>
CurrnetUserContext.Provider>
//我修改过的代码
<CurrnetUserContext.Provider value={currentUser}>
CurrnetUserContext.Provider>
寻找问题的时候查验了通过原先的封装方法是否能拿到email(可以拿到),下发之前是否可以拿到email(可以拿到),被下发value的页面能否拿到email(未拿到)
然后觉得问题应该处在context传值上面,就注意到了这个传value时候的写法,是一个箭头函数,直接修改为我要传的字段就可以拿到了
自己解决问题以后,我想要知道为什么用箭头函数return出来的value字段其他组件会拿不到呢,按理来说是可以的吧
第一种 你需要 执行以下才行 ,也就是说 value 是个函数了 。value()试试
这两种写法 第一种必须 点击才打印 ,第二种则不用。
上面那种方法一般传函数,需要手动触发。下面的则不需要。