Kir*_*iya 8 state initialization prop reactjs react-hooks
我正在使用 React 钩子作为应用程序状态,我想知道如何使用 props 初始化功能组件状态?该useState
钩医生说确切的东西一样,
const [count, setCount] = useState(0);
Run Code Online (Sandbox Code Playgroud)
我想通过传递给组件的 props 值来初始化该 0 值。年长的,
import React from 'react';
export default class Sym extends React.Component{
constructor(props){
super(props);
this.state = {
sym : [0,3,2,8,5,4,1,6],
active: this.props.activeSym
}
this.setActive = this.setActive.bind(this);
}
setActive(itemIndex){
this.setState({
active: itemIndex
});
}
render(){
return (
<div><h1>{ this.state.sym[this.state.active]}</h1></div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
工作正常。父组件传递activeSym
prop 并且Sym
组件使用this.props.activeSym
in初始化状态 constructor
。是否有任何解决方法可以在功能组件中实现相同的功能?
dem*_*ych 15
首先你可以从 props 定义它(如果 prop 存在):
const [count, setCount] = useState(activeSym);
Run Code Online (Sandbox Code Playgroud)
然后你可以更新这个值,当 prop 没有立即有值时(当组件呈现时):
useEffect(() => {
if (activeSym) {
setCount(activeSym);
}
}, [activeSym])
Run Code Online (Sandbox Code Playgroud)
Rid*_*tel 12
是的,这也可以通过功能组件实现!您只需要添加useEffect
监听 prop 更改即可使用 prop 值初始化状态
export const newComponent = (props) => {
const { path, value, info, update } = props;
const [val, setVal] = useState(value);
useEffect(() => {
setVal(value);
}, [value]);
return <div>{val}</div>;
};
Run Code Online (Sandbox Code Playgroud)
附加沙盒链接
https://codesandbox.io/s/confident-agnesi-ohkq7?file=/src/MakeComponent.js
归档时间: |
|
查看次数: |
10940 次 |
最近记录: |