javascript - ReactJs 如何在点击事件中更改按钮的图标?

标签 javascript reactjs

我正在使用 IconButton来自 material-ui我想在点击/触摸事件后更改按钮的图标。

var tableModeElement =
<IconButton key="tableModeButton" 
 onTouchTap={() => { 
   this.setState(prevState => (
    { isCardView: !prevState.isCardView })) } }>
  <i className="material-icons theme-color-p1">
   {this.state.isCardView ? "view_module" : "list"}
  </i>
</IconButton>

表达式{this.state.isCardView ? "view_module" : "list"}仅评估一次,之后不再评估。我想如果我改变状态我会强制重新渲染?我做错了什么?

编辑:补充说 iconButton 被分配给一个变量。如果我包括 <IconButton>直接进入渲染方法它工作正常。我必须重新分配变量才能使其正常工作。

最佳答案

我相信这会奏效:

class IconButton extends React.Component { 
  constructor(props) {
    super(props);
    this.state = {
      isCardView: false,
    }
  } 

  render() {
    return (
      <a className="btn btn-primary" onClick={()=>this.setState({ isCardView: !this.state.isCardView })}>
        { this.state.isCardView
          ? <span className="glyphicon glyphicon-remove-sign" />
          : <span className="glyphicon glyphicon-ok-sign" />
        }
        &nbsp;&nbsp;BUTTON
      </a>
    );
  }

}

class App extends React.Component { 
  render () {                                        
    return (
      <div>
        <IconButton />  
      </div>
    );
  }
}

ReactDOM.render(<App/>,document.getElementById('root'));

我正在使用 Bootstrap ,但任何图标系统都可以工作

http://codepen.io/cjke/pen/MJvXNo?editors=0010

关于javascript - ReactJs 如何在点击事件中更改按钮的图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852930/

相关文章:

javascript - 关于用户通过单击按钮触发的 React Hooks 和 AJAX 调用的困境

reactjs - 了解combineReducers

javascript - 回调未正确更新状态 (ReactJS)

javascript - 为什么 "{} == false"是不正确的 javascript 语法,而 "false == {}"不是?

javascript - 页面某些部分加载后,jQuery 可拖动功能不起作用

javascript - 谷歌浏览器 : Focus issue with the scrollbar

javascript - 为什么 fiddle 不工作并且在以下情况下有时间滞后?

javascript - 如何更好地格式化从 api 提取的数据到 Ant 设计表

javascript - 使用对象数组中的 propTypes 来 react 组件

javascript - 在计时器上播放 (html5) 音频