【问题标题】:React Checkbox onCheck get key valueReact Checkbox onCheck 获取键值
【发布时间】:2018-07-23 01:19:58
【问题描述】:

我目前正在使用 React 构建一个网站,但我无法从 onChange 事件中获取 Checkbox 键值。这是我的代码的样子:

handleChange = (e) => {
    console.log('it works');
    console.log(e.target.key);
}

还有我的复选框代码:

<Table.Cell><Checkbox key={singleNews.key} name="myCheckBox1" onChange={this.handleChange}/></Table.Cell>

它只是打印出'it works'和'undefined'。我还在构造函数中使用了 'this.handleChange = this.handleChange.bind(this)。谁能帮我找出错误可能是什么?作为记录;我目前正在使用 Semantic UI React 框架 - 这可能是问题所在吗?

提前致谢。

【问题讨论】:

  • 我会做 console.log(e.target.tagname) 并检查目标是复选框还是表格单元格,然后从那里开始
  • 什么是复选框?它是一些自卷组件还是来自库?
  • @megamit 是的,复选框是一个自卷组件,伪装成常规的“样式复选框”。

标签: reactjs checkbox event-handling onchange semantic-ui


【解决方案1】:

首先react中的key属性是一个特殊的prop,不应该是accessed by your app and treated as internal to react

如果您不尝试将密钥用于任何事情,而只是尝试从 this issue thread 获取更新的数据,则应该可以像这样访问事件处理程序中的值:

handleChange = (e, data) => {
    console.log('it works');
    console.log(data.value);
}

如果您想根据运行时收到的数据将数据传递到事件处理程序中,那么您可以将 Checkbox 代码更改为:

<Table.Cell>
    <Checkbox name="myCheckBox1" onChange={(e, data) => this.handleChange(singleNews.key, data.value)}/>
</Table.Cell>

以及您对此的更改处理程序

handleChange = (key, value) => {
    console.log('here\'s the key', key);
    console.log('and the value', value);
}

【讨论】:

  • 非常感谢。我不知道这个。为我节省了很多时间。
  • 所以换句话说,我应该只是使用名称来为我的网站设置唯一 ID?它用于标记特定的消息,然后根据 ID 更改它们。
  • 您可以做的是绑定您希望更改处理程序在渲染时接收的值。我会更新我的答案
  • 我明白了。您是否知道我将如何使复选框检查独一无二?我的意思是;只能勾选一个特定的,而不是多个。
【解决方案2】:

根据docs of semantic-ui-react(根据标签,这是您正在使用的库吗?)您会得到两个参数:eventdata

data 是:

所有道具和建议的检查/不确定状态。

所以你的代码应该是这样的:

handleChange = (e, data) => {
    console.log('it works');
    console.log(data); // the data / props that passed to the component
}

请注意,keyreact 保留,不会传回处理程序。
不过,您可以使用任何其他prop

【讨论】:

  • 非常感谢,我不知道数据参数。为我节省了很多时间。
  • 你可以传递任何你想要的道具并阅读它。例如myId
  • 我不知道。谢谢你告诉我这些,每天都在学习新东西!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多