redux入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

搭配react实现任务显示

我们将搭配react实现任务界面的显示。

1、实现思路

我们将用react创建一个AddTodoCom组件。

初始化实例state,将store_.getState()也就是redux的state赋值给items

getInitialState:function(){
  return {
    items:store.getState()
  }
}

完成组件的render后调用subscribe函数,每次redux的state发生改变同步更新react的state

componentDidMount:function(){
  var unsubscribe = store_.subscribe(this.onChange);
},
onChange:function(){
  this.setState({
    items:store.getState()
  });
},

创建虚拟DOM

我们需要创建输入框、添加按钮、筛选按钮、以及任务列表,

我们为已经完成任务和为完成的任务添加不同的样式,并且标记每个任务的index,以便于完成任务操作

使用bind改变this的指向

render:function(){
  return(
        <div className='warp'>
        <input type='text' ref='todo'/>
        <button onClick={this.handleClick}>'☠'</button>
        <ul>
          {
            this.state.items.todos.map(function(item){
              var index = this.state.items.todos.indexOf(item);
               return item.completed ? <li className='complete' data-index={index}>{item.text}</li> : <li data-index={index} >{item.text}</li>
            }.bind(this))
          }
        </ul>
        <button onClick={this.handleSelect}  data-select='SHOW_ALL'>ALL</button>
        <button onClick={this.handleSelect} data-select='SHOW_COMPLETE'>COMPLETE</button>
        <button onClick={this.handleSelect} data-select='SHOW_ACTIVE'>ACTIVE</button>
      </div>
    );
}

到这里我们就完成了任务界面的显示。

在此提醒一下,如果暂时不会react可以在汇智网找到相应的课程学习,当然,也可以绕过react相关章节,对redux章节并无影响。为了方便暂时不会react同学学习,在react相关章节中也不会留相关练习,见谅。