Redux에서 상태를 업데이트 한 후 콜백을 트리거하는 방법은 무엇입니까?
React에서는 상태가 즉시 업데이트되지 않으므로 setState(state, callback)
. 하지만 Redux에서 어떻게할까요?
를 호출 한 후 this.props.dispatch(updateState(key, value))
즉시 업데이트 된 상태로 무언가를해야합니다.
React에서하는 것과 같은 최신 상태로 콜백을 호출 할 수있는 방법이 있습니까?
새 소품을 받으려면 구성 요소를 업데이트해야합니다.
목표를 달성하는 방법이 있습니다.
1. componentDidUpdate 값이 변경되었는지 확인한 다음 작업을 수행합니다.
componentDidUpdate(prevProps){
if(prevProps.value !== this.props.value){ alert(prevProps.value) }
}
2. redux-promise (미들웨어가 promise 의 해결 된 값을 전달합니다)
export const updateState = (key, value)=>
Promise.resolve({
type:'UPDATE_STATE',
key, value
})
그런 다음 구성 요소
this.props.dispatch(updateState(key, value)).then(()=>{
alert(this.props.value)
})
2. redux-thunk
export const updateState = (key, value)=> dispatch=>{
dispatch({
type:'UPDATE_STATE',
key, value
})
return Promise.resolve()
}
그런 다음 구성 요소
this.props.dispatch(updateState(key, value)).then(()=>{
alert(this.props.value)
})
React에서 가장 중요한 점은 단방향 데이터 흐름입니다. 귀하의 예에서 즉, 작업 전달 및 상태 변경 처리가 분리되어야 함을 의미합니다.
"내가 그랬던 것처럼 당신은 생각한다 A
, 지금 X
이된다 Y
"어떤 때 내가 어떻게 내가 그것을 처리 "하지만 X
될 Y
어떤 관계없이" A
. 상점 상태는 구성 요소 외에도 여러 소스에서 업데이트 할 수 있으며 시간 여행도 상태를 변경할 수 있으며 A
디스패치 지점을 통해 전달되지 않습니다 .
기본적으로 componentWillReceiveProps
@Utro가 제안한대로 사용해야 함을 의미합니다.
subscribe
리스너를 사용할 수 있으며 액션이 전달 될 때 호출됩니다. 리스너 내부에서 최신 매장 데이터를 얻을 수 있습니다.
http://redux.js.org/docs/api/Store.html#subscribelistener
콜백과 함께 썽크를 사용할 수 있습니다.
myThunk = cb => dispatch =>
myAsyncOp(...)
.then(res => dispatch(res))
.then(() => cb()) // Do whatever you want here.
.catch(err => handleError(err))
Hooks API 사용 :
useEffect
소품을 입력으로 사용합니다.
import React, { useEffect} from 'react'
import { useSelector } from 'react-redux'
export default function ValueComponent() {
const value = useSelectror(store => store.pathTo.value)
useEffect(() => {
console.log('New value', value)
return () => {
console.log('Prev value', value)
}
}, [value])
return <div> {value} </div>
}
간단한 솔루션으로 사용할 수 있습니다. redux-promise
But if you using redux-thunk, you should do sth like this:
function addCost(data) {
return dispatch => {
var promise1 = new Promise(function(resolve, reject) {
dispatch(something);
});
return promise1;
}
}
ReferenceURL : https://stackoverflow.com/questions/39524855/how-to-trigger-off-callback-after-updating-state-in-redux
'Programing' 카테고리의 다른 글
Android Studio 빌드에서 클래스 제외? (0) | 2020.12.25 |
---|---|
Xcode의 자산 카탈로그에 JPEG를 어떻게 추가 할 수 있습니까? (0) | 2020.12.25 |
데이터베이스를 문서화하는 방법 (0) | 2020.12.25 |
Java의 비동기 IO? (0) | 2020.12.25 |
Visual Studio 2010을 VS2008과 나란히 설치하면 문제가 발생합니까? (0) | 2020.12.25 |