Я не совсем уверен, какова будет ваша цель в этом примере.Если вы хотите, чтобы две кнопки увеличивали один и тот же счетчик, ваш код в настоящее время не работает должным образом.
Если вы несколько раз нажмете кнопку «компонент плюс», а затем нажмите кнопку «родительский плюс»,Ваш счетчик вернется к значению при последнем нажатии родительской кнопки.
Если вы хотите передать состояние дочерним компонентам, вы обычно не хотите сохранять переданное состояние как состояние дочерних компонентов.Это сделает излишне трудным синхронизировать оба состояния.
Что бы вы сделали, это передать это состояние и функцию для установки этого состояния в дочерний компонент.
Ваш пример будетвыглядеть так:
const App = () => {
const [foo, setFoo] = React.useState(1);
return (
<div>
<FooBar foo={foo} setFoo={setFoo} />
<button onClick={() => setFoo(x => x + 1)}>parent plus</button>
</div>
);
};
const FooBar = props => {
console.log("render");
return (
<div>
{props.foo} <button onClick={() => props.setFoo(x => x + 1)}>component plus</button>
</div>
);
};