프로젝트에 ARc (Atomic React)를 새로 사용하고 있습니다. (대단한 일이며 궁극적으로 앞으로있을 일에 대한 미래를 예측할 수 있습니다. 엔터 프라이즈 수준의 제품),하지만 그것을 함께 잘못 퍼즐하지 않는 경우에만 미래의 증거이고 현재 내 애플 리케이션에서 선택기를 사용하는 방법을/언제/어디서/왜 주위에 내 머리를 얻을 수 없습니다.react/redux/saga/selector 설정에서 '어디로 갈 것인가'와 맞서 싸다
읽으신 분은 How is state passed to selectors in a react-redux app?으로 훌륭하지만 실제로 몇 가지 예를 들어 봐야합니다.
현재 해결해야 할 문제는 user
개체 (앱 전체에 액세스 가능)와 해당 데이터를 사용하여 사용자가 수정할 수있는 계정 설정 페이지의 상태를 쉽게 볼 수있는 슬라이스를 만드는 것입니다. 그들 자신의 이름, 전자 우편, 등등. 나는 그들이상점을 실제로 사용하기를 원하지 않을 것이다. 왜냐하면 그들이 실제로 submit을 칠 때까지 아무것도 바꾸지 않기를 원하기 때문이다. 그러나 redux에서 양식 상태를 유지하기를 원할 것이다. 작업 :
export const USER_GET_REQUEST = 'USER_GET_REQUEST'
export const USER_GET_REQUEST_SUCCESS = 'USER_GET_REQUEST_SUCCESS'
export const USER_GET_REQUEST_FAILURE = 'USER_GET_REQUEST_FAILURE'
export const getUserRequest = (params, resolve, reject) => ({
type: USER_GET_REQUEST,
params,
resolve,
reject,
})
export const getUserRequestSuccess = user => ({
type: USER_GET_REQUEST_SUCCESS,
user,
})
export const getUserRequestFailure = error => ({
type: USER_GET_REQUEST_FAILURE,
error,
})
무용담 :
import { take, put, call, fork } from 'redux-saga/effects'
import api from 'services/api'
import * as actions from './actions'
export function* readGetUser() {
try {
const data = yield call(api.get, '/user')
yield put(actions.getUserRequestSuccess(data))
} catch (e) {
yield put(actions.getUserRequestFailure(e))
}
}
export function* watchUserGetRequest() {
while (true) {
const { params } = yield take(actions.USER_GET_REQUEST)
yield call(readGetUser, params)
}
}
export default function*() {
yield fork(watchUserGetRequest)
}
감속기 :
(내가 원하는 다른 용기에 소품을 통해 액세스 할 수 있습니다) 모든 좋은 내 사용자에로드
import { initialState } from './selectors'
import { USER_LOGIN_SUCCESS, USER_GET_REQUEST_SUCCESS } from './actions'
export default (state = initialState, action) => {
switch (action.type) {
case USER_LOGIN_SUCCESS:
return state
case USER_GET_REQUEST_SUCCESS:
return {
...state,
user: action.user,
}
default:
return state
}
}
선택기 (내 말도 안되는 코드 주석 처리 된 한 줄은 user
에는 실제로 사용자 데이터가 있지만 IT 데이터는 어떻게 처리합니까?
export const initialState = {
user: {},
}
export const getUser = (state = initialState) => state.user || initialState.user
// export const getUser = (state = initialState) => {
// if (state.user) {
// return Object.assign({}, state, {
// formData: {
// firstName: state.user.firstName,
// lastName: state.user.lastName,
// email: state.user.email,
// phone: state.user.phone,
// },
// })
// }
//
// return initialState.user
// }
코드 도움말은 놀랍고 명확한 설명은 내 자부심에 내 흔들리지 않는 애정과 감사 + 언급을 얻습니다.
약간의 질문을 명확히 할 수 있습니까?주로 "선택기 기능을 언제 어디에서 사용합니까?" – markerikson
에쉬, 알아. 나는이 질문을 10 번이나 써서 "일반적인 혼란"을 제외하고 뿌리까지 내려고 썼다. 예, 언제 그리고 어디에서 선택기 기능을 사용합니까?이 특정 인스턴스에서 양식 데이터를 분리하는 경우 어떻게 사용합니까? – megkadams
당신은이 질문에 대한 모든 대답을 읽을 필요가 있습니다. - http://stackoverflow.com/q/35411423/1477051 –