【问题标题】:How to access reactjs usestate value in global scope?如何在全局范围内访问 reactjs usestate 值?
【发布时间】:2022-01-16 12:02:46
【问题描述】:

我有以下 reactJS 代码 -

useEffect(()=>{
    const getinterviewerDetails= async ()=>{
      const data1 = await axios.get("http://localhost:8083/api/GetProduct")
      .then(response => {
        console.log("role is "+response.data[0].role)
        setinterviewerDetails(response.data)
        var cars = response.data,
        result = cars.reduce(function (r, a) {
            r[a.role] = r[a.role] || [];
            r[a.role].push(a);
            return r;
        }, Object.create(null));
        console.log("result is : ",result);
        console.log(interviewerDetails)
    })
    .catch(error => { console.log(error) })
    setinterviewerDetails(data1);
    };  
  getinterviewerDetails();
  },[])

我需要从 useEffect 函数中获取全局范围内的结果值。我尝试这样做只是从函数范围之外声明变量,然后使用useEffect 范围对其进行初始化。但是,它赋予了未定义的价值。我怎样才能完成它?我只需要从全局范围访问结果值。

【问题讨论】:

  • 您可以使用像 Redux 这样的全局 scrope 管理器。或者干脆使用 localStorage。
  • React 不使用“全局”作用域。您的问题需要更多的上下文和清晰度。你真的只是想用 Promise 链中计算的 result 值更新 interviewerDetails 状态值吗?如果不是,那么请更新您的问题以包含所有相关代码,并更明确地说明您尝试使用result 变量/值。 stackoverflow.com/help/minimal-reproducible-example
  • 你为什么在两个不同的地方打电话给setinterviewerDetails?什么是-var cars = response.data, result = cars.reduce(...? - 这不是有效的语法

标签: javascript reactjs react-hooks dom-events javascript-objects


【解决方案1】:

我认为一种方法是创建上下文 (https://en.reactjs.org/docs/hooks-reference.html#usecontext) 并将变量放入其中。

另一种方法是在父组件中通过useState声明你的变量并将setState函数传递给子组件

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多