簡體   English   中英

如何在 ReactJs 中使用 RadioButton 設置狀態

[英]How to setState using RadioButton in ReactJs

我試圖在 ReactJs 中使用單選按鈕設置狀態,但我不知道為什么這不起作用,也許我的代碼中缺少一些東西

  var handleRadio = (event)=>{
      this.setState({views:event.target.value})
     
    }
    

這是我的函數“handleRadio”

 <input
                    type="radio"
                    checked={this.state.views === "streets-v11"}
                    onClick={handleRadio} 
                    value="streets-v11"
                /> Street Map <br />
                <input
                    type="radio"
                    checked={this.state.views === 'outdoors-v11'}
                    onClick={handleRadio} 
                    value="outdoors-v11"
                /> Topo Map <br />
                    <input
                    type="radio"
                    checked={this.state.views === 'satellite-v9'}
                    onClick={handleRadio} 
                    value="satellite-v9"
                /> Satellite Map  

這是我的按鈕代碼.. 我試圖在單選按鈕單擊時調用該函數,然后根據該函數我試圖設置 state 的值,但是這段代碼在我的項目中無法用於 setState 這段代碼有什么問題? 我的狀態名稱是初始化為空字符串的視圖....

我認為你應該使用 OnChange 而不是 OnClick 道具

onClick={handleRadio}更改為OnChange={handleRadio}

這是一個完整的例子

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      views: [
        { txt: 'streets-v11', value: false },
        { txt: 'outdoors-v11', value: true },
        { txt: 'satellite-v9', value: true }
      ]
    };
    this.handleRadio = this.handleRadio.bind(this);
  }

  handleRadio(e) {
    let views = this.state.views.slice(0);
    views = views.map((v) => {
      if (v.txt === e.target.name) v.value = !v.value;
      return v;
    });
    this.setState({ ...this.state, views });
  }

  render() {
    return (
      <h1>
        {this.state.views.map((v) => {
          return (
            <div key={v.txt}>
              <input
                name={v.txt}
                type="radio"
                checked={v.value}
                onClick={this.handleRadio}
              />
              {v.txt}
            </div>
          );
        })}
      </h1>
    );
  }
}

render(<App />, document.querySelector('#root'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM