Это возможно с useState
или useReducer
, поскольку useState
использует useReducer
внутри:
const [, updateState] = React.useState();
const forceUpdate = useCallback(() => updateState({}), []);
forceUpdate
не предназначен для использования при обычных обстоятельствах, только в тестировании или в других неурегулированных случаях. Эту ситуацию можно разрешить более общепринятым способом.
setCount
является примером неправильно используемого forceUpdate
. setState
является асинхронным по соображениям производительности и не должен быть вынужден быть синхронным только потому, что обновления состояний не выполнялись правильно. Если состояние опирается на ранее установленное состояние, это следует сделать с помощью функции обновления ,
Если вам нужно установить состояние на основе предыдущего состояния, прочтите об аргументе средства обновления ниже.
<...>
Состояние и реквизиты, полученные функцией обновления, гарантированы.
быть в курсе. Вывод средства обновления поверхностно объединен с
состояние.
setCount
может не быть иллюстративным примером, поскольку его назначение неясно, но это относится к функции обновления:
setCount(){
this.setState(({count}) => ({ count: count + 1 }));
this.setState(({count2}) => ({ count2: count + 1 }));
this.setState(({count}) => ({ count2: count + 1 }));
}