질문 :돌아 오는 : 조직 컨테이너, 구성 요소, 행동 및 감속기
큰 React/Redux 응용 프로그램 컨테이너, 구성 요소, 행동 및 감속기를 구성하는 대부분의 유지 보수 및 권장되는 가장 좋은 방법은 무엇입니까 ?
내 의견 :
현재 추세가 연결된 컨테이너 컴퍼넌트의 주위에 (... 액션, 감속기, 무용담) REDUX의 담보를 구성 할 것으로 보인다. 예 :
/src
/components
/...
/contianers
/BookList
actions.js
constants.js
reducer.js
selectors.js
sagas.js
index.js
/BookSingle
actions.js
constants.js
reducer.js
selectors.js
sagas.js
index.js
app.js
routes.js
위대한 작품입니다! 이 디자인에는 몇 가지 문제가있는 것으로 보입니다.
이슈 1 :
우리가 안티 패턴을 보인다 다른 컨테이너에서 actions
, selectors
또는 sagas
에 접근 할 필요가. 감속기/상태가있는 글로벌 /App
컨테이너가 카테고리 및 열거 형과 같이 전체 앱에서 사용하는 정보를 저장한다고 가정 해 보겠습니다. 상태 트리, 위의 예에 이어 :
{
app: {
taxonomies: {
genres: [genre, genre, genre],
year: [year, year, year],
subject: [subject,subject,subject],
}
}
books: {
entities: {
books: [book, book, book, book],
chapters: [chapter, chapter, chapter],
authors: [author,author,author],
}
},
book: {
entities: {
book: book,
chapters: [chapter, chapter, chapter],
author: author,
}
},
}
우리는 (분명히 잘못?) 우리는 하나 /BookList/selectors.js
에서 다시 작성해야하는 우리의 /BookList
용기 내에서 /App
컨테이너에서 selector
를 사용하거나 가져 오려면 /App/selectors
(항상 똑같은 선택기가됩니까? 아니오). 이 appraoches는 모두 나에게 최적이 아닌 것 같습니다.
이 사용 사례의 대표적인 예로는 VERY 일반적인 "부작용"모델 인 인증 (인증 ...)이 있습니다. 앱 전체에 서가, 액션 및 선택기에 /Auth
에 액세스해야하는 경우가 있습니다. 우리는 컨테이너가있을 수 있습니다 /PasswordRecover
, /PasswordReset
, /Login
, /Signup
.... 실제로 우리의 응용 프로그램에서 우리의 /Auth
contianer 전혀 실제 구성 요소가있다!
/src
/contianers
/Auth
actions.js
constants.js
reducer.js
selectors.js
sagas.js
위에서 언급 한 여러 가지 종종 관련없는 인증 컨테이너에 대한 모든 Redux 보조 자료를 포함하기 만하면됩니다.
현재 구조가 궁금합니다. 선택기를 어떻게 사용하고 있습니까? 구성 요소가'BookList' 셀렉터 함수를 사용한다고 가정하면'mapStateToProps' 함수를 보여줄 수 있습니까? 당신은 '국가'를 통과하고 있습니까? 또는'state.booklist' – xiaofan2406