React做为Facebook 内部开发 Instagram 的项目中,是一个用来构建用户界面的优秀 JS 库,于 2013 年 5 月开源。做为前端的三大框架之一,React的应用能够说是很是的普遍,包括BAT在内的许多大公司不少项目都是基于其开发的。html
Vue:除了VDom以外,Vue的响应性能和React相比仍是有很大的区别,不管是自己的语法层面仍是外围的第三方支持软件,总之,迁移起来不会是那么容易的事情。前端
可是做为一名热爱前端的技术人员,学习优秀的技术栈仿佛已经成了一种习惯,在这里结合阮一峰React以及对阮一峰老师15年的教程进行版本更新,简单介绍一下React的入门,本文中全部demo代码都以图片形式展现,目的是建议手打尝试,而不是直接复制,如需代码能够点击这里。vue
create-react-app 是来自于 Facebook,经过该命令咱们无需配置就能快速构建 React 开发环境。react
create-react-app 自动建立的项目是基于 Webpack + ES6 。git
而后打开浏览器输入http://localhost:3000/,就能够看到React的六芒星LOGO了。
如下是React重要的部分github
由于React没有vue那样的v-for一键循环,因此要本身手动用map来实现 效果图:算法
![]()
JSX 容许直接在模板插入 JavaScript 变量。若是这个变量是一个数组,则会展开这个数组的全部成员.咱们定义了一个arr,里面是2个标题标签,经过在ul模板中添加{arr}来实现效果**(注意不是vue的"",二者不要搞混了)** 小程序
![]()
this.props.attr是取到组件传递过来的数据或属性,而this.props.children则表示组件的全部子节点,能够经过this.props.children.map来遍历出来验证。 数组
组件的属性能够接受任意值,字符串、对象、函数等等均可以。有时,咱们须要一种机制,验证别人使用组件时,提供的参数是否符合要求。浏览器
组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求
yarn add prop-types
import PropTypes from 'prop-types'
class App extends Component {
handleClick () {
this.refs.myTextInput.focus()
}
render() {
return (
<div className="App">
<LikeButton/>
<input type="text" ref="myTextInput"/>
<input type="button" value="Focus the text input" onClick={ this.handleClick.bind(this) }/>
</div>
);
}
}
复制代码
在这里须要强调的是,React的事件中若是不用剪头函数,那就要用bind来绑定this。
React中的state就至关于vue里的data数据存储,而小程序的this.setData,你们懂的..
class LikeButton extends Component {
state = {
liked: false
}
handleClick () {
// console.log(this)
this.setState({
liked: !this.state.liked
})
}
render() {
const text = this.state.liked?'liked':'don\'t like' return ( <p onClick={ () => this.handleClick() }> You { text } this.click to toggle </p> ) } } 复制代码
在这里定义一个text变量,经过state中的liked来判断text的值,而后再经过onClick点击事件来反复改变liked的值,效果能够本身经过代码实现看看,就是普通的MVVM模型。
vue里面v-model一键实现的事情React又没有-0-,不过咱们能够经过onChange事件来简单实现它,直接上代码.
class App extends Component {
state= {
value: 'Hello!'
}
handleChange (event) {
this.setState({
value: event.target.value
}) }
render() {
const val = this.state.value
return (
<div className="App">
<div>
<input type="text" value={val} onChange={this.handleChange.bind(this)}/>
<p>{ val }</p>
</div>
</div>
);
}
}
复制代码
组件的生命周期分红三个状态:
React 为每一个状态都提供了两种处理函数,will 函数在进入状态以前调用,did 函数在进入状态以后调用,三种状态共计五种处理函数。
此外,React 还提供两种特殊状态的处理函数。
另外,组件的style属性的设置方式也值得注意,不能写成style="opacity:{this.state.opacity};"
而要写成style={{opacity: this.state.opacity}}
做为一个前端程序猿很不容易,前端的技术更新太快,也出现了“别更新了,老子学不动了”这类前端的梗。不过前端层出不穷的技术让咱们看到了前端的将来,咱们都是热于分享的人,但愿正在学习的我也可以帮助到正在学习的你。 这些demo都在个人github,感兴趣的朋友能够clone下来看下,最近搭了一个我的blog,欢迎来踩,PC端主题一股科幻风有没有!!主题来自于hexo主题 最后说一句!很重要!若是个人这篇文章帮助到了你,那你能够点个star再走嘛~一块儿upupup!