转发自:https://jspang.com/detailed?id=48#toc290 (P24节)
用结构复制精简代码
现在代码中有好几处this.props
都是重复的,这时候就可以用javascript
的解构赋值方法,来精简代码。修改TodoList.js
中的Render
函数,把原来带代码修改为下面的代码:
//改之前
render() {
return (
<div>
<div>
<input value={this.props.inputValue} onChange={this.props.inputChange} />
<button onClick={this.props.clickButton}>提交</button>
</div>
<ul>
{
this.props.list.map((item,index)=>{
return (<li key={index}>{item}</li>)
})
}
</ul>
</div>
);
}
//改之后
render() {
let {inputValue ,inputChange,clickButton,list} = this.props;
return (
<div>
<div>
<input value={inputValue} onChange={inputChange} />
<button onClick={clickButton}>提交</button>
</div>
<ul>
{
list.map((item,index)=>{
return (<li key={index}>{item}</li>)
})
}
</ul>
</div>
);
}
把TodoList
改为UI组件-提高性能
可以看到,现在的TodoList
组件里没有任何的业务逻辑,只有一个Render
方法,这时候就可以把它改为UI组件(无状态组件),UI组件就是一个方法,减少很多冗余操作,从而提高程序运行性能。这时候重新声明一个TodoList
的变量,然后把render函数里的东西复制过来,只要稍加修改,就可以得到下面的代码:
//优化前
class TodoList extends Component {
render() {
let {inputValue ,inputChange,clickButton,list} = this.props;
return (
<div>
<div>
<input value={inputValue} onChange={inputChange} />
<button onClick={clickButton}>提交</button>
</div>
<ul>
{
list.map((item,index)=>{
return (<li key={index}>{item}</li>)
})
}
</ul>
</div>
);
}
}
//优化后
const TodoList =(props)=>{
let {inputValue ,inputChange,clickButton,list} = props; // 粘贴过来后,此处要进行修改
return (
<div>
<div>
<input value={inputValue} onChange={inputChange} />
<button onClick={clickButton}>提交</button>
</div>
<ul>
{
list.map((item,index)=>{
return (<li key={index}>{item}</li>)
})
}
</ul>
</div>
);
}
代码写完后,我们删除一些不用的引入,然后就可以到浏览器中进行预览了。
import React from 'react';
import {connect} from 'react-redux'