Github: github.com/aototo/blog
喜欢文章的朋友star 支持一下,长期更新...毫不偷懒javascript
const Greeting = ({ name, style }) => {
return <div style={style}>{name}</div>
};复制代码
常常会遇处处理数组数据的状况,能够用下面的方式简单的渲染出来。html
render() {
return (
(<ul> {List.map((item) => ( <li>{item}</li> ))} </ul>)
)
}复制代码
好比 <input type="text" >
每次写很麻烦吧,能够封装一个成一个组件java
const Input = (props) => {
return <input type = {props.type} {...props} /> }复制代码
组件能够分红不少类类,有的是布局类,有的是功能类。下面是一种布局类的组件。react
<FlexContainer>
<div style={{ flex: 1 }}>{this.props.leftSide}</div>
<div style={{ flex: 2 }}>{this.props.rightSide}</div>
</FlexContainer>复制代码
高阶组件很像decorator,提高组件的能力。好比你想一些组件里面使用一下功能,react-router 中git
import { withRouter } from 'react-router'
withRouter(SomeComponent)复制代码
例子:github
var Enhance = ComposedComponent => class extends React.Component {
componentDidMount() {
this.setState({ name: "李狗子" });
}
render() {
return <ComposedComponent {...this.props} name = {this.state.name} />; } };复制代码
项目中常常会用到这两种状况如:
受控组件,更新的时候须要使用this.setState数组
constructor() {
super();
this.state = {value: ""}
}
render() {
return <input type="text" value={this.state.value} /> }复制代码
不受控组件,主要须要经过ref来获取input的值。react-router
render() {
return <input type="text" ref="myInput" /> }复制代码
两种方法均可以在特定的场合去使用,我的以为数据相对重要的页面须要使用受控组件会比较合适。less
项目中常常有判断语句,用三元表达式能够很方便的写出想要的逻辑ide
const demo = ({ isOK }) => {
return isOK
? <p> Yes </p>
: <p> No </p>
};复制代码
可使用function来更新state
this.setState((prevState, props) => ({
return ...
}));复制代码
场景:下面的例子是初始化组件后,让input默认获取光标。ref最终指向的已经渲染好的DOM节点,或者是react class的实例。具体能够看官方的文档
componentDidMount() {
this.input.focus();
}
render() {
return (
<input ref={comp => { this.input = comp; }} /> ) }复制代码
一个很是错误的作法好比:
<Component {...props} />复制代码
props上面若是有很是多的属性,会形成很是昂贵的计算。正确的应该
<Component name = { props.name } />复制代码
以上是平时写React用到的一些写法小技巧,说有用还蛮有用的!
有错误的地方还请指正!谢谢你们。
下面2个连接都很棒哦!记得收藏star...
参考:
react 代码规范