首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React技巧7

1.React 技巧1(状态组件与无状态组件的使用) ----2018.01.04

2.React 技巧2(避免无意义的父节点)----2018.01.05

3.React 技巧3(如何优雅的渲染一个List)----2018.01.06

4.React 技巧4(如何处理List里面的Item)----2018.01.07

5.React 技巧5(TodoList实现)----2018.01.08

6.React技巧6(TodoList实现2组件之间传递数据)---2018.01.09(新增)

7.React技巧7(TodoList实现3组件之间传递数据之优化)---2018.01.10(新增)

开发环境:Windows 8,node v8.9.1,npm 5.5.1,WebStorm 2017.2.2

这节课,我们来优化一下上节课的代码!其中有几个地方,代码写的有点重复!

其中这两段代码就是很重复,我们重构下:

我们看下这个List.jsx组件,是不是感觉页有很多重复代码?

我们把List.jsx组件也重构下!

importReactfrom'react';

constLiCont= () =>

handleItemEdit(data.id,data.status===1?:1)}

className=>

;

constList= props =>

{

props.list.map(data => [

props.type===?

:

props.type===1&& data.status===1?

:

props.type===2&& data.status===?

:

null

]

)

}

;

export defaultList;

TodoList.jsx 完整代码

importReactfrom'react';

importListfrom'./List';

import'../../../public/css/todoList.pcss';

classTodoListextendsReact.Component {

constructor(props) {

super(props);

this.state= {

list: []

};

this.handleAdd=this.handleAdd.bind(this);

this.handleItemEdit=this.handleItemEdit.bind(this);

}

handleAdd() {

letitem =this.refs['todoInput'].value;

if(item) {

letlist =this.state.list;

list.push({id: list.length+1,title: item,status:1});

this.setState({list: list},() =>console.log(this.state.list))

}else{

alert('不能为空')

}

}

handleItemEdit(id,status) {

letlist =this.state.list;

list.find(data => data.id=== id).status= status;

this.setState({list: list})

}

componentDidMount() {

}

render() {

let=this.state;

return(

添加

全部

未删除

已删除

);

}

}

export defaultTodoList;

这种写法,虽然省略了一些代码,但是可读性可能会差点,理解起来,新手可能有点困难!又多了一个子组件,大家发现没有祖孙组件,甚至更多层级的组件,我们都要把状态,方法层层传递,讲这节课是为了之后的状态管理器做铺垫!

我们看下浏览器效果!

一切正常!

本文完

禁止擅自转载,如需转载请在公众号中留言联系我们!

感谢童鞋们支持!

如果你有什么问题,可以在下方留言给我们!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G03AML00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券