首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未捕获的名称:无法读取未定义[name- switch]的属性“”name“”

未捕获的名称:无法读取未定义[name- switch]的属性“”name“”
EN

Stack Overflow用户
提问于 2019-10-30 14:36:27
回答 2查看 1K关注 0票数 0

我想在antd的开关中使用事件作为回调。我不知道如何使用event来获取this.state.game的值。

代码语言:javascript
复制
handleToggle = event => {
     this.setState({
         [event.target.name]: !this.state[event.target.name]
     });
};

   render() {
     return(
        <Switch 
            checkedChildren='on' 
            unCheckedChildren='off' 
            name='game' value={this.state.game} 
            onClick={this.handleToggle}
        />
    );
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-30 14:54:49

Switch onClick签名为:

代码语言:javascript
复制
Function(checked: boolean, event: Event)

所以它应该是:

代码语言:javascript
复制
handleToggle = (_, event) => {
  this.setState({
    [event.target.name]: !this.state[event.target.name]
  });
}

也就是说,event是第二个参数。

票数 0
EN

Stack Overflow用户

发布于 2019-10-30 14:49:18

您不需要在Switch中添加正确的value

代码语言:javascript
复制
class App extends Component {
  state = {
    game: false
  };

  handleToggle = (checked, event) => {
    this.setState({
      game: checked
    });
  };

  render() {
    const { game } = this.state;
    console.log("switch status: ", game);
    return (
      <div className="App">
        <Switch
          defaultChecked={false}
          checkedChildren="on"
          unCheckedChildren="off"
          name="game"
          onClick={this.handleToggle}
        />
      </div>
    );
  }
}

这是一个快速演示code sandbox

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58619809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档