javascript - React初学者操作class的疑惑?
PHP中文网
PHP中文网 2017-04-11 11:48:22
[JavaScript讨论组]

就是简单的切换class,多个元素,点击哪个就给哪个添加 “curr”class,其他元素移除“curr”,

//jQuery 如下
$("el").addClass("curr").siblings().removeClass("curr")

React 中怎么写呢?下面这个方法很蠢,不知如何是好?

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
PHP中文网

你写的没有什么问题,但是可以优化一下

  1. 点击了已经是curr的p,可以不用重新render

  2. choose-opts里面的重复内容可以批量生成

  3. 没有必要记录所有的curr信息,只需要当前的

var Hello = React.createClass({
    getInitialState() {
    //只需要记录当前的
    return {curr: 0} 
  },
  shouldComponentUpdate(nextProps, nextState) {
    // 优化点击已经curr的不需要重新render
    return !(nextState.curr === this.state.curr)
  },
  handleClick(i) {
    this.setState({curr: i})
  },
  render: function() {
    // 批量生成
    return (
      <p>
        {[...Array(this.props.total)].map((x, i) =>
          <p 
            className={i === this.state.curr ? 'curr' : ''}
            onClick={this.handleClick.bind(null, i)} // 只需要index,不需要传event
            key={i}
          >
            {i === this.state.curr ? 'curr' : 'not curr'}
          </p>
        )}
      </p>
    )
  }
})

ReactDOM.render(
  <Hello total={5} />,
  document.getElementById('container')
)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号