【发布时间】:2020-09-15 18:47:18
【问题描述】:
我是 REACT 的新手,我在试图弄清楚 onChange 事件道具以及许多其他事件道具时都遇到了麻烦。它正在传递的道具让我着迷。例如
handleSubmit(e) {
let s = this.state;
s.data[e.target.name] = e.target.value;
this.setState(s);
}
它在我见过的几乎所有示例(函数的声明)中都是这样给出的,并且总是抱怨函数 def 中的 e 隐含为“任何”类型。如果我将它声明为 e:any 它会停止抱怨,但是我无法让 s.data[e.target.name] 工作,因为它说我不能将“任何”类型作为索引。我无法弄清楚它是如何声明的,或者我在某处是否有配置问题。如果我将 e.target.name 替换为像“myarray”这样的字符串常量,它会起作用。
REACT 应用是用一个普通的
npx create-react-app test --template typescript
不更改生成的配置文件。
状态被声明为
state = {
data: { fldName: 'something', anotherField: 'somethingelse'}
}
有什么想法吗?
【问题讨论】:
-
这是另一个问题,但是你正在改变这段代码中的状态 state.data[...] = ...,你不应该这样做:reactjs.org/docs/react-component.html#state
-
cbr,这是有道理的,我有点想像这样。是否有地方记录了这些标准事件类型,因为我找不到任何东西。
-
弗洛里安,是的,我知道你不打算改变状态,这就是为什么我复制了它,然后使用了 setState,但我猜我已经这样做了有 s 指向状态而不是拥有它的副本,或者您指的是我的初始化。这是在类定义内部但在函数外部完成的。这不是初始化状态的正确方法吗?
标签: reactjs