上节课通过TodoList的练习,⽬的是为了让⼤家理解ES6中各种新特性的实际⽤途。
最好的学习⽅法就是实践,所以这节课结合实际项⽬,来更好的理解和掌握ES6的⽤途和使⽤场景,达到灵活运⽤的⽬的。
扩展操作符在⽗组件给⼦组件传递⼀批属性的情境中更为⽅便。
class AutoloadingPostsGrid extends React.Component {
render() {
var {
className,
...others, // contains all properties of this.props except for className
} = this.props;
return (
<div className={className}>
<PostsGrid {...others} />
<button onClick={this.handleLoadMoreClick}>Load more</button>
</div>如何管理好设计公司
);
}
}
使⽤react开发最常见的问题就是⽗组件要传给⼦组件的属性较多时⽐较⿇烦
class MyComponent extends React.Component{
//假设MyComponent已经有了name和age属性
render(){
中央空调维保方案
return (
<SubComponent name={this.props.name} age={this.props.age}/>
)
}
}
使⽤扩展操作符可以变得很简单
class MyComponent extends React.Component{
//假设MyComponent已经有了name和age属性
render(){
return (
<SubComponent {...this.props}/>
)
儿童简单折纸
}
}
上述⽅式是将⽗组件的所有属性都传递下去,如果这其中有些属性不需要传递呢?也很简单
class MyComponent extends React.Component{
//假设MyComponent有很多属性,⽽name属性不需要传递给⼦组件
var {name,...MyProps}=this.props;
render(){
return (
<SubComponent {...Myprops}/>
)
}
}
上述⽅法最常⽤的场景就是⽗组件的class属性需要被单独提取出来作为某个元素的class,⽽其他属性需要传递给⼦组件。在构建通⽤容器时,扩展属性会⾮常有⽤。
function App1() {
return <Greeting firstName="Ben" lastName="Hector" />;
}
function App2() {
const props = {firstName: 'Ben', lastName: 'Hector'};
return <Greeting {...props} />;
}
5、Promi
场景⼀ : 所有图⽚加载完再显⽰在页⾯上,避免页⾯闪动。
function loadImg(src) {
return new Promi((resolve, reject) => {
三年级作文评语let img = ateElement('img');
img.src = src;
樱桃小丸子头像
resolve(img)
}
reject(err)
}
})
}
function showImgs(imgs) {
imgs.forEach(function(img){
document.body.appendChild(img);
})
}
Promi.all([
loadImg('/pic1')
loadImg('/pic2')
loadImg('/pic3')
]).then(showImgs)
场景⼆: 多个资源中只要加载了其中⼀种就可。
{
function loadImg(src) {
return new Promi((resolve, reject) => {
let img = ateElement('img');
img.src = src;
resolve(img)
青岛邮电博物馆
}
reject(err)
}
收费员年终总结
})
}
function showImgs(img) {
document.body.appendChild(img);
}
Promi.race([
loadImg('/pic1')
loadImg('/pic2')
健康最重要
loadImg('/pic3')
]).then(showImgs)
}
6、Generator
在异步编程的解决⽅案中,Generator⽐Promi更⾼级些。
使⽤场景:抽奖次数逻辑控制、长轮询(服务器请求报错再次请求, 定时发送请求)