Mobx - runInAction() 사용.그게 왜 필요하죠?
나는 이 주제에 관한 다양한 웹사이트를 읽었지만 왜 우리가 이 주제를 필요로 하는지 알아내지 못했다.runInAction
방법 및 작동 방식에 대해 설명합니다.
누가 설명 좀 해줄래?runInAction
기능성?
감사해요.
간단히 말하면, 당신은 정말 필요 없습니다. runInAction
사용하지 않고 어플리케이션을 작성할 수 있으며, 정상적으로 동작할 수 있습니다.
그러나 더 큰 코드베이스에서 작업 중인 경우 몇 가지 모범 사례를 적용하려면 mobx 기능인 "강제 액션/엄격 모드"를 사용할 수 있습니다. 이 기능은 기본적으로 액션 내에서 상태를 수정해야 합니다.동작은 상태의 일부가 변경된 이유를 명확히 하고 mobx devtools에서 유용한 디버깅 정보를 제공하기 때문에 유용합니다.
이 구성 플래그를 사용하여 작업 외부에서 상태를 수정하려고 하면 mobx에서 오류가 발생합니다.
그래, 뭔데?runInAction
?
예를 들어, 이 예에서는runInAction
:
loadWeather = city => {
fetch(
`https://abnormal-weather-api.herokuapp.com/cities/search?city=${city}`
)
.then(response => response.json())
.then(data => {
this.setWeatherData(data); // <==== here
});
};
@action
setWeatherData = data => {
this.weatherData = data;
};
strict 모드를 사용하고 있기 때문에 weatherData를 설정하기 위한 새로운 액션을 정의해야 했습니다.
한 번만 사용하기 위해 액션을 정의해야 하는 경우 이 작업은 금방 지루해질 수 있습니다.
자, 온다runInAction
단축할 수 있습니다.
loadWeatherRunInThen = city => {
fetch(`https://abnormal-weather-api.herokuapp.com/cities/search?city=${city}`)
.then(response => response.json())
.then(data => {
runInAction(() => {
this.weatherData = data; // <====== We dont have to define an action
});
});
};
그러니까 기본적으로는runInAction
는 코드 조각을 가져와 액션을 수동으로 작성할 필요 없이 익명 액션으로 실행합니다.
상세한 것에 대하여는, 다음의 링크를 참조해 주세요.
- https://github.com/mobxjs/mobx/blob/mobx4and5/docs/refguide/action.md#runinactionname-thunk
- https://github.com/mobxjs/mobx/blob/mobx4and5/docs/refguide/api.md#configure
- https://www.leighhalliday.com/mobx-async-actions
편집:
위의 답변은 Mobx 4 시절이었습니다.
Mobx 6의 경우:
기본적으로 MobX 6 이상에서는 작업을 사용하여 상태를 변경해야 합니다.단, 이 동작을 디세블로 하도록 MobX를 설정할 수 있습니다.
새로운 매뉴얼 링크:
https://mobx.js.org/actions.html#runinaction
https://mobx.js.org/actions.html#disabling-mandatory-actions-
https://mobx.js.org/configuration.html#enforceactions
언급URL : https://stackoverflow.com/questions/57271153/mobx-runinaction-usage-why-do-we-need-it
'it-source' 카테고리의 다른 글
MongoDB 관계: 임베드 또는 참조? (0) | 2023.04.06 |
---|---|
meta_query, 관계 OR & AND를 모두 사용하여 검색하려면 어떻게 해야 합니까? (0) | 2023.04.01 |
식을 '워치 해제'하는 방법 (0) | 2023.04.01 |
nginx에서 certbot을 사용하는 경우 문제 발생 (0) | 2023.04.01 |
AngularJs 앱을 작성할 때 Jade 또는 핸들 바를 사용하는 이유는 무엇입니까? (0) | 2023.04.01 |