useState는 동기화되어 있습니까?
과거에, 우리는 분명히 경고받은 적이 있습니다setState({myProperty})비동기이며, 이 값은this.state.myProperty콜백 또는 다음 콜백까지 유효하지 않습니다.render()방법.
useState를 사용하면 상태 값을 명시적으로 업데이트한 후 어떻게 얻을 수 있습니까?
후크에서는 어떻게 동작합니까?내가 아는 한, 세터 기능은useState콜백을 받지 않습니다.
const [value, setValue] = useState(0);
setValue(42, () => console.log('hi callback');
콜백은 실행되지 않습니다.
구세계의 다른 회피책은 인스턴스 변수를 거는 것입니다.(e.g. this.otherProperty = 42)클래스에서는 동작하지 않습니다.재이용하는 함수인스턴스가 없기 때문입니다(아니요).this(완전 모드).
업데이트 후 를 사용하여 최신 상태에 액세스할 수 있습니다.여러 상태 훅이 있고 그 일부만 업데이트를 추적하는 경우 두 번째 인수로 어레이 내의 상태를 전달할 수 있습니다.useEffect기능:
useEffect(() => { console.log(state1, state2)}, [state1])
상기의useEffect다음 경우에만 호출됩니다.state1갱신되어 있기 때문에 신뢰하지 말아 주세요.state2최신이 아닐 수 있으므로 이 함수 내부에서 값을 가져옵니다.
업데이트 함수가 다음에 의해 작성되었는지 궁금하신 경우useState는 동기화되어 있습니다.즉, 훅을 사용할 때 React가 상태 업데이트를 배치하는 경우, 이 답변은 이에 대한 몇 가지 통찰력을 제공합니다.
관련 문서를 참조하시면...
const [state, setState] = useState(initialState);
스테이트풀값과 이를 갱신하는 함수를 반환합니다.
첫 번째 렌더링 중 반환된 상태(상태)는 첫 번째 인수(initialState)로 전달된 값과 동일합니다.
setState 함수는 상태를 갱신하기 위해 사용됩니다.새로운 상태 값을 받아들여 컴포넌트의 재렌더를 큐잉합니다.
setState(newState);
이후 재렌더 중에 useState에서 반환된 첫 번째 값은 항상 업데이트 적용 후 최신 상태가 됩니다.
그래서 당신의 새로운 상태는 그게 무엇이든 간에 당신이 방금 설정한 것입니다.useState즉, 가치의 가치initialState에 직접 접속합니다.state그 후 반응적으로 갱신됩니다.관련 문서의 추가 인용:
발신자 useState의 역할은 무엇입니까?「상태 변수」를 선언합니다.우리의 변수는 카운트라고 불리지만 바나나와 같은 다른 어떤 변수도 부를 수 있습니다.이는 함수 호출 간에 일부 값을 "유지"하는 방법입니다.useState는 this.state가 클래스에서 제공하는 것과 동일한 기능을 사용하는 새로운 방법입니다.일반적으로 함수가 종료될 때 변수는 "소거"되지만 상태 변수는 반응으로 유지됩니다.
갱신될 마다 뭔가 「부터」를 사용해 .componentDidUpdate를 클릭합니다.(docs)
언급URL : https://stackoverflow.com/questions/54119678/is-usestate-synchronous
'source' 카테고리의 다른 글
| Postgres JSON 데이터 유형 Rails 쿼리 (0) | 2023.02.14 |
|---|---|
| JSON Stringify가 UTC로 인해 날짜를 변경합니다. (0) | 2023.02.14 |
| 구체화된 뷰와표:어떤 장점이 있습니까? (0) | 2023.02.14 |
| 웹 팩을 사용하여 angularjs를 Import하기 위한 베스트 프랙티스는 무엇입니까? (0) | 2023.02.10 |
| react app을 배포할 때 오류가 발생하여 계속 << 플러그인 "react"가 "package" 간에 충돌했습니다.json l eslint - config - config - app -> (0) | 2023.02.10 |