You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
staticgetDerivedStateFromProps(nextProps,prevState){// Store prevId in state so we can compare when props change.if(nextProps.id!==prevState.prevId){return{externalData: null,prevId: nextProps.id,};}// No state update necessaryreturnnull;}componentDidUpdate(prevProps,prevState){if(this.state.externalData===null){this._loadAsyncData(this.props.id);}}
5. 双向绑定
React
html 标签<input>, <textarea> , 和 <select> 使用受控组件,setState同步更新onChange后的 value
1.创建组件
React
React 有两种类型的组件,分别是 functional component, class component,所以有两种定义方式:
functional component
class component
Vue
全局注册
局部注册
单文件组件
2. 模板语法
通过以下几个方面说:
React
遍历渲染: map
条件渲染:使用三目,&&,如果逻辑在复杂一点就得用函数来帮忙了
html 属性: 跟原生一样直接写不过要换成驼峰式 tab-index => tabIndex,React 16 以后还支持自定义属性。
绑定事件:改成驼峰
onClick
这样的形式,同时传入一个函数Vue
遍历渲染: v-for
条件渲染
vue-if
系列v-show
与
v-if
的逻辑显示不同,v-show
只是简单地切换元素的 CSS 属性 displayhtml 属性:需要用 v-bind 来指定
绑定事件:v-on
事件修饰符:
3.流通管道 Props
React
React 的 props 如果是静态的就直接传字符串,动态的就用变量
{}
来传,还可以传入方法(在子组件上 props 属性获取)。Vue
传入的值 title 为一个常量(静态 prop)时,不加 v-bind
传入的值 title 为一个变量(动态 prop)时,加 v-bind(此时传递的才是变量,然后 vue 会去 data 里找这个值)
传入方法的话,一样要使用 v-on,子组件要用 emit 方法来触发。
4. 内部状态 State
React
在 React,组件内部自己维护的状态叫 State,不能直接去改内部状态 state,而是通过
setState
Vue
在 Vue, 组件内部自己维护的状态其实就是 Data。如果要改的话,直接在方法里通过 this 或者是通过 vue 对象来改。
Vue 除了在 Data 里定义的属性之外,还额外定义计算属性跟侦听属性
为啥 React 不需要这个属性呢?
因为 React 有 render 函数,你可以在里面随便多定义一个变量。
每一次 this.state.message 改变的时候,都一定会调用 render 函数重新渲染,所以就相当于重新计算 reversedMessage 了。
侦听属性感觉跟计算属性很像,但是他们又有不同。
侦听属性是为了可以监听到数据的改变,然后做一些异步的或者开销大的操作。
同样的问题,为啥 React 不需要这个属性呢?
因为 React 里已经有方法可以做到了。
React 15 的版本,可以通过 componentWillReceiveProps 来实现
React 16 的版本,可以通过
getDerivedStateFromProps
,componentDidUpdate
来实现。5. 双向绑定
React
html 标签
<input>
,<textarea>
, 和<select>
使用受控组件,setState
同步更新onChange
后的 valueVue
vue 采用
v-model
的形式实际上 v-model 是一个语法糖, 上面可以翻译成:
此外,v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:
v-model 不仅仅可以用在原生 html 元素上,还可以用在组件上。用在组件上的时候 v-on 用于监听事件,emit 用来触发事件。
6. 生命周期
React、vue 的生命周期都大同小异,主要就是创建 -> 更新 -> 销毁。具体一些名字不同而已。
参考
The text was updated successfully, but these errors were encountered: