【问题标题】:React How to pass hook value to CreateContextReact 如何将钩子值传递给 CreateContext
【发布时间】:2021-02-03 02:44:49
【问题描述】:

我有一个SideBarBlurChange 组件,我需要在BlurChangeValue 数组内传递一个名为values 的值,该数组位于CreateContext 内。

在网上没有找到合适的例子,希望可以reolize,因为目前我没有其他的reolize选项。我想显示我想要做的事情的屏幕截图,让你更清楚

export const BlurContext = createContext({
    BlurChangeValue: [],
});

export default function SideBarBlurChange(props) {

    const ls = parseInt(window.localStorage.getItem('values'));
    const [values, SetValues] = useState(ls ? [ls] : [20]);

    const SaveChanges = () => {
        localStorage.setItem('values', values);
    }

    return (
        <>
            <BlurContext.Provider values={values}>
                // jsx
            </BlurContext.Provider>
        </>
    );
}

【问题讨论】:

  • 以正确的结构将值分配给提供者:&lt;BlurContext.Provider value={{ BlurChangeValue: values }}&gt;

标签: javascript reactjs react-redux react-hooks react-context


【解决方案1】:

很多错误

1. const ls = parseInt(window.localStorage.getItem('values')); 似乎 localStorage.values 是数字,但是 localStorage.setItem('values', values); 设置为数组
2.createContext({ BlurChangeValue: [], });用属性BlurChangeValue创建一个Object上下文,但&lt;BlurContext.Provider value={values}&gt;提供数组值


const [values, setValues] = useState(()=> JSON.parse(localStorage.getItem('values') || '[20]'));
const saveValues = ()=> {
    localStorage.setItem('values', JSON.stringify(newValues));
}
return (
<BlurContext.Provider values={{BlurChangeValue: values}} >
)
;

【讨论】:

  • Context.Provider 属性应该是 value 而不是 values
  • 很遗憾,它不起作用,请注意Provider中的截图,我得到了值,但是当我尝试在SideBar组件中获取这个值时,我得到未定义screenshot跨度>
  • 可能是因为我没有在 SideBarBlurChange 中导入 SideBar?
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2020-02-24
  • 1970-01-01
  • 2021-02-05
  • 2021-05-28
相关资源
最近更新 更多