반응형
구성 요소 외부에서 Redux 동작을 트리거할 수 있습니까?
리액트 앱을 만들고 있으며, 커스텀 핸들러 라이브러리에 전화를 걸어 REST API에 콜을 발신하고 있습니다.
이러한 (비반응) 함수에서 엔드포인트 응답으로 저장소를 업데이트하기 위해 Redx 액션을 트리거하고 싶지만 일반적인 'mapDispatchToProps'/connect() 메서드 없이 Redex 액션을 트리거하는 방법을 찾을 수 없습니다.
이게 가능합니까?
감사해요.
범위 밖에서 디스패치 및 액션을 수행하려면 스토어 인스턴스를 가져와 다음과 같이 호출해야 합니다.
import { store } from '/path/to/createdStore';
function testAction(text) {
return {
type: 'TEST_ACTION',
text
}
}
store.dispatch(testAction('StackOverflow'));
Promise에서 사용한 해결/거부 또는 onSuccess/onError 패턴을 복사하는 것을 매우 좋아합니다.
그러니 너도 똑같이 했으면 좋겠어.커스텀 핸들러를 호출하여 onSuccess 및 onError 콜백을 전달합니다.따라서 데이터를 가져올 때 Success를 호출할 수 있으며 오류가 발생한 경우 onError 콜백을 호출할 수 있습니다.
onSuccess 및 onError는 사용자에게 무언가를 보여주거나 다른 작업을 수행하는 컴포넌트 내 함수입니다(오류 발생 시 오류 토스트 메시지 표시?!).
예를 들어 보겠습니다.
export default class CustomService{
getData(onSuccess, onError){
//axios.get(...) or fetch(...)
if(success) call onSuccess(result)
if(error) call onError(error)
}
}
export default class MyComponent extends React.Component{
constructor(props){
super(props);
this.state = {
showError:false
}
this.customService = new CustomService();
this.onSuccess = this.onSuccess.bind(this);
this.onError = this.onError.bind(this);
}
componentDidMount(){
this.customService.getData(this.onSuccess, this.onError);
}
onSuccess(result){
// Do something if necessary
// Call the redux action
}
onError(error){
//Show a toast message to user or do something else
this.setState({showError:true});
}
}
onSuccess에서 Redx에 전화를 걸어 데이터를 저장할 수 있습니다.
언급URL : https://stackoverflow.com/questions/50962628/is-it-possible-to-trigger-a-redux-action-from-outside-a-component
반응형
'source' 카테고리의 다른 글
TypeScript skipLibCheck가 node_modules libs를 아직 검사하고 있습니다. (0) | 2023.02.17 |
---|---|
React.js를 사용하여 속성이 있는지 확인합니다. (0) | 2023.02.17 |
Javascript window.open이 작동하지 않음 (0) | 2023.02.17 |
태플은 어떻게 JSON과 시리얼화 및 시리얼화 해제합니까? (0) | 2023.02.17 |
Javascript Object와 JSON Object의 차이점은 무엇입니까? (0) | 2023.02.13 |