vue与react的一些常用区别
2017-10-18 17:49
816 查看
自己感觉的区别
vue ----------------------react
data state 对象,组件的属性(state的修改必须使用setState方法执行)
computed 没有了
props 外部接收到了属性this.props直接可以访问
components 直接引入,首字母大写,直接当成标签使用
methods 组件类的对象方法(自定义的对象方法,this为undefined)
生命周期方法
创建
constructor()
构造函数。初始化属性和方法了
componentWillMount()
//组件将要挂载
render()
//挂载
componentDidMount()
//组件将要挂载完毕
注意:数据请求在componentWillMount这个方法之后执行
使用state:任意的方法中都可以
使用props:componentWillMount这个方法之后使用
更新
componentWillReceiveProps()
shouldComponentUpdate()
componentWillUpdate()
render()
componentDidUpdate()
销毁
componentWillUnmount()
捕获异常
componentDidCatch()
vue指令 react中单向数据绑定(js数据绑定在dom结构上)
v-model <input value={this.state.val} onChange={this.inputChange.bind(this)}/>
inputChange(event){
this.setState({val: event.target.value});
}
v-if let divDom = this.state.show ? <div className="box"></div> : ''
v-show let divDom2 = this.state.show ? <div className="box2"></div> : <div className="box2" style={{display: 'none'}}></div>;
v-for <ul>
{
this.state.arr.map((item, index)=>{
return <li key={index}>{item}</li>
})
}
</ul>
组件与组件间的通讯 react
父组件传子组件 属性方式传值
<App title={"hello"}/>
<AppHeader name={this.state.username}></AppHeader>
内部访问 this.props.title this.props.name
子组件传父组件 自定义事件作为属性传给子组件使用,子组件调用props上的属性,执行事件,从而执行了父级的事件。
父组件调用子组件时:<AppHeader modify={this.modifyName.bind(this)}></AppHeader>
子组件传值时:this.props.modify('XXXXX');
代码
import React, { Component } from 'react'
import PropTypes from 'prop-types';
//let isPropsUpdate = false;
export default class AppHeader extends Component{
constructor(){
super();
this.state = {
num : 20,
val: 123,
show: true,
arr: [1,2,8,4,5,6]
}
}
render(){
console.log('header render ----挂载');
//v-if
let divDom = '';
let divDom2 = <div className="box2" style={{display: 'none'}}></div>;
if(this.state.show){
divDom = <div className="box"></div>;
divDom2 = <div className="box2"></div>;
}
return (
<header>
<h1>
{this.props.name}
</h1>
<button onClick={this.modifyName.bind(this)}>修改name值为:王五</button>
<p>
{this.state.num}
<button onClick={this.updateNum.bind(this)}>
修改
</button>
</p>
//v-moudle
<input value={this.state.val} onChange={this.inputChange.bind(this)}/>
<br/>
//v-show
<button onClick={this.btnAction.bind(this)}>{this.state.show?'显示':'隐藏'}</button>
{divDom}
{divDom2}
//v-for
<ul>
{//当成js解析
this.state.arr.map((item, index)=>{
return <li key={index}> {item} </li>
})
}
</ul>
</header>
)
}
updateNum(){
this.setState({num: 40});
}
btnAction(){
this.setState({show: !this.state.show});
}
inputChange(event){
console.log(event.target.value)
//由于数据是单向绑定的,输入框的值修改不了,只有直接修改绑定的值,dom结构的显示才能变化
this.setState({val: event.target.value});
}
vue ----------------------react
data state 对象,组件的属性(state的修改必须使用setState方法执行)
computed 没有了
props 外部接收到了属性this.props直接可以访问
components 直接引入,首字母大写,直接当成标签使用
methods 组件类的对象方法(自定义的对象方法,this为undefined)
生命周期方法
创建
constructor()
构造函数。初始化属性和方法了
componentWillMount()
//组件将要挂载
render()
//挂载
componentDidMount()
//组件将要挂载完毕
注意:数据请求在componentWillMount这个方法之后执行
使用state:任意的方法中都可以
使用props:componentWillMount这个方法之后使用
更新
componentWillReceiveProps()
shouldComponentUpdate()
componentWillUpdate()
render()
componentDidUpdate()
销毁
componentWillUnmount()
捕获异常
componentDidCatch()
vue指令 react中单向数据绑定(js数据绑定在dom结构上)
v-model <input value={this.state.val} onChange={this.inputChange.bind(this)}/>
inputChange(event){
this.setState({val: event.target.value});
}
v-if let divDom = this.state.show ? <div className="box"></div> : ''
v-show let divDom2 = this.state.show ? <div className="box2"></div> : <div className="box2" style={{display: 'none'}}></div>;
v-for <ul>
{
this.state.arr.map((item, index)=>{
return <li key={index}>{item}</li>
})
}
</ul>
组件与组件间的通讯 react
父组件传子组件 属性方式传值
<App title={"hello"}/>
<AppHeader name={this.state.username}></AppHeader>
内部访问 this.props.title this.props.name
子组件传父组件 自定义事件作为属性传给子组件使用,子组件调用props上的属性,执行事件,从而执行了父级的事件。
父组件调用子组件时:<AppHeader modify={this.modifyName.bind(this)}></AppHeader>
子组件传值时:this.props.modify('XXXXX');
代码
import React, { Component } from 'react'
import PropTypes from 'prop-types';
//let isPropsUpdate = false;
export default class AppHeader extends Component{
constructor(){
super();
this.state = {
num : 20,
val: 123,
show: true,
arr: [1,2,8,4,5,6]
}
}
render(){
console.log('header render ----挂载');
//v-if
let divDom = '';
let divDom2 = <div className="box2" style={{display: 'none'}}></div>;
if(this.state.show){
divDom = <div className="box"></div>;
divDom2 = <div className="box2"></div>;
}
return (
<header>
<h1>
{this.props.name}
</h1>
<button onClick={this.modifyName.bind(this)}>修改name值为:王五</button>
<p>
{this.state.num}
<button onClick={this.updateNum.bind(this)}>
修改
</button>
</p>
//v-moudle
<input value={this.state.val} onChange={this.inputChange.bind(this)}/>
<br/>
//v-show
<button onClick={this.btnAction.bind(this)}>{this.state.show?'显示':'隐藏'}</button>
{divDom}
{divDom2}
//v-for
<ul>
{//当成js解析
this.state.arr.map((item, index)=>{
return <li key={index}> {item} </li>
})
}
</ul>
</header>
)
}
updateNum(){
this.setState({num: 40});
}
btnAction(){
this.setState({show: !this.state.show});
}
inputChange(event){
console.log(event.target.value)
//由于数据是单向绑定的,输入框的值修改不了,只有直接修改绑定的值,dom结构的显示才能变化
this.setState({val: event.target.value});
}
相关文章推荐
- 常用java集合类的一些小区别
- vue、angular、react前端三大框架的区别
- react-native中一些常用软件或专有名词
- vue的一些常用配置
- 【Cocos2d-X(2.x) 游戏开发系列之一】cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解!在2.x版CCFileData类被去除等
- vue-router一些常用知识
- cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解
- 查询数据库最大的索引、静态类与非静态类的区别、后台操作DIV样式的方法、C#操作TreeView组件中的一些常用方法及具体实现
- 浅析angular,react,vue.js jQuery使用区别
- vue以及js的一些坑或常用技巧
- 浅析angular,react,vue.js jQuery使用区别
- vue.js(2.0)常用指令总结以及一些指令的坑!
- AngularJS 1,AngularJS 2,Vue 1 ,Vue 2, React之间的区别和优劣势比较
- Vue-起步篇:Vue与React、 Angular的区别
- 【Cocos2d-X(2.x) 】cocos2dx(v2.x)与(v1.x)的一些常用函数区别讲解!在2.x版CCFileData类被去除等
- 使用vue做前端开发时涉及到npm的一些常用指令
- 一些常用对象的区别(更新中)
- React-Native中一些常用组件的用法详解(二)
- DB2的常用命令及与ORACLE的一些区别