이 상태랑 이 상태랑 뭐가 달라?setstate를 ReactJS로 설정하시겠습니까?
값을 요.hasSubmit
를를누누누누다다추천하지 않는 거 알아요., 두 코드는 setState
.
this.state
★★★★★★★★★★★★★★★★★」setState
- 값 " " " " " " " " " " " " " " " " " " " " " " " " " " " " 。
hasSubmit
★★★★★★★★★★★★★★★★?
첫 번째 코드:
this.state.hasSubmit = false
this.setState({})
//Code that will use `hasSubmit`.
두 번째 코드:
this.setState({
hasSubmit: false,
});
//Code that will use `hasSubmit`.
추가:
시나리오는 다음과 같습니다.
hasSubmit
설정하다false
getInitialState()
.hasSubmit
바뀌게 됩니다.false
submit
버튼을 클릭합니다.hasSubmit
바뀌게 됩니다.true
출출시 。
[ ]를 클릭합니다.submit
가 없고, 「」입니다.hasSubmit
로 설정됩니다.true
.
, 두 클릭을 합니다.submit
하면 거예요.Second asynchronous code
「」이 있기 때문에hasSubmit
true
「」, 「」,First Code
이 문제를 해결할 수 있습니다.
React 문서의 내용은 다음과 같습니다.
않다
this.state
setState()는 setState()로 지정합니다..state를 사용합니다.
setState()
는 this.state를 즉시 변환하지 않고 보류 상태의 천이를 작성합니다." " 의 액세스this.state
이 메서드를 호출하면 기존 값이 반환될 수 있습니다.setState에 대한 콜의 동기 동작은 보증되지 않으며 성능 향상을 위해 콜이 배치될 수 있습니다.
setState()
는 조건부 되지 않는 한 항상 .shouldComponentUpdate()
.을 에서 할 수 경우
shouldComponentUpdate()
, 호출, 호출setState()
새로운 상태가 이전 상태와 다른 경우에만 불필요한 재검출을 피할 수 있습니다.
API를 설계된 방식으로 사용하는 것이 항상 현명합니다.의사가 주(州)를 변이시키지 말라고 하면 주(州)를 변이시키지 않는 것이 좋습니다.
<고객명>님은setState()
기술적으로 비동기적일 수도 있고 눈에 띄게 느리지는 않을 겁니다.포트 the render()
이치
중 React의 인 React입니다.shouldComponentUpdate()
,componentWillUpdate()
,componentDidUpdate()
-가 됩니다. - 서호호 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 。setState()
하고, 「」에 전화하는 경우setState()
오브젝트가 비어 있으면 이러한 메서드를 구현할 수 없게 됩니다.
또 하나는 그냥 형편없는 프로그래밍 스타일이라는 것이다.한 번에 할 수 있는 일을 두 개의 문장으로 하고 있습니다.
게다가 여기에는 실제적인 이점이 없습니다.경우든, 「」는,render()
다음 시간까지 트리거되지 않습니다.setState()
(또는forceUpdate()
)가 호출됩니다.
실제로 무엇이 필요한지 설명하지 않고 이 작업을 수행해야 한다고 주장합니다.아마도 당신은 당신의 문제를 좀 더 자세히 설명하고 싶을 것입니다.아마 더 나은 해결책이 있을 거예요.
틀에 반대하기보다는 틀을 가지고 일하는 것이 가장 좋습니다.
갱신하다
아래의 코멘트로부터:
아래의 변경된 hasSubmit을 사용해야 합니다.
네, 이제 알겠어요.미래 상태 속성을 즉시 사용해야 하는 경우 로컬 변수에 저장하는 것이 가장 좋습니다.
const hasSubmit = false;
this.setState({
hasSubmit: hasSubmit
});
if (hasSubmit) {
// Code that will use `hasSubmit` ...
반응으로 상태를 변경하고 재렌더를 트리거하려는 경우:두 번째 코드를 사용합니다.
this.setState({
hasSubmit: false,
});
첫 번째 코드의 문제/오류:
this.state.hasSubmit = false // Updates state directly:
// You are not supposed to do this
// except in ES6 constructors
this.setState({}) // passes an empty state to react.
// Triggers re-render without mutating state
this.setState
는 반응 컴포넌트의 라이프 사이클을 유지하며 변수를 변환하는 것처럼 보이지 않습니다(내부적으로는 변환 상태가 발생하더라도).따라서 반응 사이클의 단방향 흐름은 부작용 없이 유지됩니다.
주의할 점은this.setState
ES6 클래스의 컨스트럭터에서는 동작하지 않습니다.사용할 필요가 있다this.state =
보다 오히려 패턴this.setState
ES6 컨스트럭터에서
설명서의 조언을 무시해서는 안 됩니다.쓰기 시 setState는 setState 및 re-render가 종료되었을 때 콜백함수인 second 인수를 허용합니다.코드가 어떻게 hasSubmit 값을 사용하는지 알려주지 않기 때문에 다른 사용자가 hasSubmit이 변경되었는지 확인하고 싶을 때 도움이 될 수 있다고 생각합니다.
하면 됩니다.this.forceUpdate()
첫 번째 예에서는 상태를 강제로 업데이트합니다.예를 들어 다음과 같습니다.
this.state.hasSubmit = false;
this.forceUpdate();
이렇게 쓰는 게 요.this.setState
native native업 me me me me native native native native native native native native native native native check check check check-------------체크스테이트메카니즘을시작합니다.
「」의 임의의 .this.state
로 directlysetState
render 하지 않습니다.render mecanizm은 mecanizm을 갱신합니다.
언급URL : https://stackoverflow.com/questions/35867038/what-the-difference-of-this-state-and-this-setstate-in-reactjs
'programing' 카테고리의 다른 글
Yoast SEO | 커스텀 변수 작성 방법 (0) | 2023.04.01 |
---|---|
JSON 문자열을 오브젝트로 해석하는 가장 간단한 C# 함수는 무엇입니까? (0) | 2023.04.01 |
재스민은 약속을 시험한다.그 후 기능하다 (0) | 2023.04.01 |
JSON 날짜 문자열을 Python 날짜/시간으로 변환 (0) | 2023.04.01 |
create-react-app의 개발 서버가 자동으로 새로 고쳐지지 않음 (0) | 2023.04.01 |