확인 단추가있는 일반 모달 또는 토스트를 사용하면이 구성 요소에 작업을 전달하여 확인을 클릭 할 때 디스패치 할 수있는 것이 유용합니다.툰크 또는 콜백 함수를 리 덕스 액션에 전달하는 방법. 모달 및 토스트 확인 알림을위한 redux 저장소의 함수 직렬화
동작은 다음과 같이 보일 수 있습니다 : modalConfirm
같은 다른 액션 객체입니다
export function showConfirm({modalConfirm}) {
return {
type: 'MODALS/SHOW_MODAL',
payload: {
modalId: getUuid(),
modalType: 'CONFIRM',
modalConfirm : modalConfirm,
},
};
}
:
modalConfirm
작업이
dispatch(modalConfirm)
또는
dispatch(Object.assign({}, modalConfirm, someResultFromTheModal)
를 사용하여 모달 구성 요소 내부에 전달되는
const modalConfirm = {
type: 'MAKE_SOME_CHANGES_AFTER_CONFIRM',
payload: {}
}
유감스럽게도이 솔루션은인 경우에만 작동합니다.은 간단한 redux 액션 객체입니다. 이 시스템은 분명히 매우 제한적입니다. 어쨌든 단순한 객체 대신 펑크와 같은 함수를 전달할 수 있습니까?
이상적으로, 뭔가 완전한 기능을 갖춘 좋아하는이 :
const modalConfirm = (someResultFromTheModal) => {
return (dispatch, getState){
dispatch({
type: 'MAKE_SOME_UPDATES',
payload: someResultFromTheModal
})
dispatch({
type: 'SAVE_SOME_STUFF',
payload: http({
method: 'POST',
url: 'api/v1/save',
data: getState().stuffToSave
})
})
}
}
대답 이후로이 승인 기호를 사용 하시겠습니까? 아니면 다른 이름으로 이동 했습니까? – Neovea
네, 이것은 시간 이동/애플리케이션 재시작을 견딜 수있는 멀티 태스킹 전자 앱에서 작동 할 수있는 유일한 시스템입니다. 그럼에도 웹 사이트와 같은 단일 스레드 환경에서 작업 할 때는 약속 캐시를 사용합니다. 이것으로 작업 할 수있는 시스템은 훨씬 좋지만 강력하지는 않습니다 ... 여기에 어떤 의미가있을 수 있습니다 : https://github.com/MrBlenny/react-redux-promise-modals/tree/master/src 예제는 모달에만 적용되지만 일반화 할 수 있습니다. 약속의 이드는 액션 내부를 지나가고 그 약속은 해결/거부됩니다. – MrBlenny