我有一个react函数组件,并将我的状态声明为:
const [myState, setMyState] = useState<boolean>(true);
当这个函数在我的一个 prop 改变时重新呈现时,myState是否重置为true?
zujrkrfu1#
重新渲染后,state的值不会自动更改。
在react中,始终为单向转换:
状态更改将触发**render()**方法。Render方法不会触发状态更改。
q3aa05252#
一般来说,在React中,当我们的状态改变或 prop 改变时,组件被重新渲染,但是rendering并不改变状态,如果你想通过改变 prop 来改变状态,你可以使用下面的代码:例如,您的组件有两个属性id, title,当您更改id或title时,您希望将myState设置为true。
id, title
id
title
myState
true
import React, {useState, useEffect} from 'react'; const MyComponent = ({id, title}) => { const [myState, setMyState] = useState(true); useEffect(()=>{ setMyState(true); },[id, title]) return (<div id={id}>{title}</div>) }
vsnjm48y3#
否,在卸载组件之前,状态将保持不变。
如果你想在卸载时触发一些东西,那么你可以使用useEffect钩子。示例:
useEffect
useEffect(()=>{ //code return ()=>{ //unMount Code } },[])
3条答案
按热度按时间zujrkrfu1#
重新渲染后,state的值不会自动更改。
在react中,始终为单向转换:
状态更改将触发**render()**方法。
Render方法不会触发状态更改。
q3aa05252#
一般来说,在React中,当我们的状态改变或 prop 改变时,组件被重新渲染,但是rendering并不改变状态,如果你想通过改变 prop 来改变状态,你可以使用下面的代码:
例如,您的组件有两个属性
id, title
,当您更改id
或title
时,您希望将myState
设置为true
。vsnjm48y3#
否,在卸载组件之前,状态将保持不变。
如果你想在卸载时触发一些东西,那么你可以使用
useEffect
钩子。示例: