javascript - 更改所选元素的颜色 - React

标签 javascript reactjs

我是 React 的新手。 我正在尝试更改选定的一个特定“li”的颜色,但它会更改所有“li”的颜色。

另外,当另一个“li”被点击时,我希望第一个“i”不再处于事件状态。

这是代码:http://codepen.io/polinaz/pen/zNJKqO

var List = React.createClass({
  getInitialState: function(){
    return { color: ''}
  },
  changeColor: function(){
    var newColor = this.state.color == '' ? 'blue' : '';
    this.setState({ color : newColor})
  },

  render: function () {
    return (
      <div>
        <li style={{background:this.state.color}} onClick={this.changeColor}>one</li>
         <li style={{background:this.state.color}} onClick={this.changeColor}>two</li>
         <li style={{background:this.state.color}} onClick={this.changeColor}>three</li>


      </div>
    );
  }
});
ReactDOM.render(
    <List/>,
    document.getElementById('app')
);

最佳答案

由于您在列出的项目上没有任何标识符,所以每次都激活/停用它们。您需要以不同的方式引用它们中的每一个,然后您可以单独设置颜色。这是一个例子

var List = React.createClass({
  getInitialState: function(){
    return { active: null}
  },

  toggle: function(position){
    if (this.state.active === position) {
      this.setState({active : null})
    } else {
      this.setState({active : position})
    }
  },
  
  myColor: function(position) {
    if (this.state.active === position) {
      return "blue";
    }
    return "";
  },

  render: function () {
    return (
      <div>
        <li style={{background: this.myColor(0)}} onClick={() => {this.toggle(0)}}>one</li>
        <li style={{background: this.myColor(1)}} onClick={() => {this.toggle(1)}}>two</li>
        <li style={{background: this.myColor(2)}} onClick={() => {this.toggle(2)}}>three</li>
      </div>
    );
  }
});
ReactDOM.render(
    <List/>,
    document.getElementById('app')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app">
  <!-- This div's content will be managed by React. -->
</div>

关于javascript - 更改所选元素的颜色 - React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101150/

相关文章:

reactjs - 仅在部署到 Azure Web 应用程序后,React JS 应用程序路由问题

javascript - 通过引用传递?

javascript - ScrollMagic 插件正在运行,但不是 "tying"滚动动画

javascript - intellij idea UNDERSCOREJS/EJS 格式化程序

reactjs - React hooks - 如何测试多个 useState hooks

javascript - react : Filter multidimensional array object by value in component

javascript - MENU 手机版不显示

javascript 回调 - 如何使用回调

javascript - 更新 URL 而不刷新页面

javascript - 如何使用 ReactJS、Redux 和 ES2015 将 onChange 回调正确绑定(bind)到 'this'?