2017-12-15 3 views
0

Redux 감속기는 부작용이 없어야합니다. 그러나 컨텐츠가 상점의 상태를 기반으로하는 브라우저에서 파일의 다운로드가 트리거되어야하는 경우에는 어떻게해야합니까? 확실히 이것은 부작용으로 간주되어야합니까? 다음과 같은 것이 좋을까요 아니면 대안적인 방법을 찾아야합니까?Redux 감속기의 부작용

case 'SAVE_GRID': { 
    const { json } = state 
    fileDownload(json, 'data.json', 'application/json') 
    return state 
} 

답변

1

당신은 매우 복잡한 상태 전환을하지 않는 한, 실제 fileDownload은하지에, 액션 창조자에 발생한다 감속기. 감속기는 병합/축소 상태에 대한 책임을 져야하며 그게 전부입니다.

조치 :

export const saveGrid = (json) => { 
    return (dispatch) => { 
     fileDownload(json, 'data.json', 'application/json') 
      .then(() => { 
       dispatch({ type: 'SAVE_GRID', json }); 
      }); 
    } 
} 

감속기 :

case 'SAVE_GRID': { 
    return { 
     ...state, 
     json: action.json 
    } 
}