首页 > 解决方案 > TypeError: _this.child(key).get 不是函数

问题描述

我正在使用hookstate导入一个将存储在 state 中的数组。

我有这个初始对象 - import { createState } from "@hookstate/core";

const initialState = {
    exerciseDetails: [
        {
            exerciseID: 1,
            exerciseName: "ex name",
            exerciseDesc: "desc",
        },
    ],
};

const exerciseState = createState(initialState);
export default exerciseState;

然后我访问我的功能组件中的对象 -

function CreateWorkoutScreen(){
    const global = useState(exerciseState);
    const { exerciseDetails } = global.get();
}

这给了我以下错误-TypeError: _this.child(key).get is not a function. (In '_this.child(key).get()', '_this.child(key).get' is undefined)

但是,如果我将初始状态更改为

const initialState = {
        count: 0,
};

并在我的功能组件中访问它

  function CreateWorkoutScreen(){
    const global = useState(exerciseState);
    const { count } = global.get();
}

它按预期工作。我猜我没有正确访问数组?我在这里使用错误的语法吗?

提前致谢!!

标签: javascriptreactjsreact-nativestate-management

解决方案


问题是您没有useState从导入@hookstate/core,而是从React

const global = useState(exerciseState); //define global state locally with hookstate's useState method
const { exerciseDetails } = global.get();

const accessFunction = () => {
  const type1 = global.exerciseDetails.get(); //works
  const type2 = global["exerciseDetails"].get(); //works
  //const type3 = global[exerciseDetails].get(); //error
  const { exerciseDetails } = global.get(); //works
  return [exerciseDetails, type1, type2];
};

这里也是工作示例:https ://codesandbox.io/s/dry-field-vjp61?file=/src/App.js


推荐阅读