比较state和props

516 阅读1分钟

state是一种数据结构,在当前组件有效,使用setState进行更改,class组件中会引发组件渲染this.setState()

函数组件中可以使用useState、useReducer.

与class组件中的setState不同的是,如果前后两次的值相同,函数组件中的useState和useReducer Hook会放弃更新,原地修改setState不会引起重新渲染

通常,不应该在react中修改本地state。然而,作为一条出路,可以用一个增长的计数器来在state没变的时候依然强制一次重新渲染:

// 在function组件中强制更新
const [ignored, foreUpdate] = useReducer(x => x+1, 0);
function handleClick() {
    forceUpdate();
}

这也是function组件中类似class组件中的forceUpdate。

而props(属性“properties”缩写)是组件的属性值,由父组件传递过来,就是组件自身来说,props是不可变的,组件不能改变自己的props,但是可以把子组件的props放在一起统一管理,props可以是多种数据类型,如对象、函数等。

props 和 classstate 都是普通的JavaScript对象。它们都是用来保存信息的,这些信息可以控制组件的渲染输出,而它们的一个重要不同点是:props是传递给组件的(类似于函数的形参),而state是在组件内被组件自己管理的(类似于在一个函数内声明的变量

一个参数值到底要不要放在state中去,取决于该参数值会不会变,并且改变后要不要跟新页面