es6在react中的应用代码解析(2)
使用 react 开发最常见的问题就是父组件要传给子组件的属性较多时比较麻烦
class MyComponentextends React.Component{
//假设MyComponent已经有了name和age属性
render(){
return (
<SubComponent name={this.props.name} age={this.props.age}/>
)
}
}
使用扩展操作符可以变得很简单
class MyComponentextends React.Component{
//假设MyComponent已经有了name和age属性
render(){
return (
<SubComponent {...this.props}/>
)
}
}
上述方式是将父组件的所有属性都传递下去,如果这其中有些属性我不需要传递呢?也很简单
class MyComponentextends React.Component{
//假设MyComponent有很多属性,而name属性不需要传递给子组件
var {name,...MyProps}=this.props;
render(){
return (
<SubComponent {...Myprops}/>
)
}
}
上述方法最常用的场景就是父组件的 class 属性需要被单独提取出来作为某个元素的 class ,而其他属性需要传递给子组件
六、创建组件
import React,{Component} from "react";
class MyComponentextends Component{
//组件内部代码
}
七、State/Props/PropTypes
es6 允许将 props 和 propTypes 当作静态属性在类外初始化
class MyComponentextends React.Component{}
MyComponent.defaultProps={
name:"SunnyChuan",
age:22
};
MyComponent.propTypes={
name:React.PropTypes.string.isRequired,
age:React.PropTypes.number.isRequired
};
es7 支持直接在类中使用变量表达式
class MyComponentextends React.Component{
static defaultProps={
name:"SunnyChuan",
age:22
}
static propTypes={
name:React.PropTypes.string.isRequired,
age:React.PropTypes.number.isRequired
}
}
state 和前两个不同,它不是静态的
class MyComponentextends React.Component{
static defaultProps={
name:"SunnyChuan",
age:22
}
state={
isMarried:false
}
static propTypes={
name:React.PropTypes.string.isRequired,
age:React.PropTypes.number.isRequired
}
}
七、当你构建通用容器时,扩展属性会非常有用
function App1(){
return <GreetingfirstName="Ben"lastName="Hector"/>;
}
function App2() {
const props = {firstName: 'Ben', lastName: 'Hector'};
return <Greeting {...props} />;
}
八、使用es6的计算属性代替
this.setState({
[name]:value
})
//代替
var partialState = {};
partialState[name] = value;
this.setState(partialState);
内容版权声明:除非注明,否则皆为本站原创文章。
