텍스트 편집기와 비슷한 방식으로 React/Redux를 사용하여 응용 프로그램을 작성하고 있습니다. 그것은 텍스트 편집기가 아니지만 동일한 일반적인 패러다임입니다. 새 항목을 배치하기위한 커서가 있습니다. 항목을 추가, 선택, 삭제할 수 있습니다.텍스트 편집기 용 Redux 아키텍처 : 결합 상태 처리
나는 redux의 정신을 유지하는 방식으로 내 감속기를 구조화하는 가장 좋은 방법을 고민하고 있습니다. 선택 상태, 텍스트 자체, 커서 상태 및 기타 설정을 나타내는 별도의 상태 슬라이스가 있습니다. 나는 "희박한"접근법이 각각의 상태 조각에 대해 감속기를 가지고 행동에 대한 반응으로 상태를 독립적으로 변형시키는 것이라고 생각합니다.
그러나 텍스트 편집기에서 이러한 상태 조각은 언뜻보기에 훨씬 더 결합되어 있습니다. 키를 누르면 커서 위치에 문자가 추가되고 커서가 앞으로 이동합니다. 그러나 텍스트를 선택하면 선택한 텍스트가 먼저 삭제됩니다. "삽입"모드에 있으면 오른쪽 텍스트가 "사용"됩니다. 또는 수정 자 키가 눌려져 있고 텍스트가 전혀 추가되지 않았을 수 있습니다.
즉, 서로 다른 상태 조각은 매우 결합되어 있으며 한 상태에서 발생하는 상황은 다른 상태의 상태에 따라 달라집니다.
을 읽었으며 슬라이스 감속기간에 상태를 공유하는 방법을 알고 있지만 최종 결과가 모든 슬라이스 감속기에 전체 상태를 전달하는 경우에는보기에 좋지 않습니다. 내가 그의 접근 방식에 대해 싫어하는 또 다른 점은 각 감속가가 전반적인 상태를 살펴보고 특정 행동에 대한 올바른 응답이 무엇인지에 대해 독립적으로 동일한 결론에 도달해야한다는 것입니다. 그것이 내가해야 할 일입니까, 아니면 어떻게 든 나의 상태를 어떻게 다르게 구성해야합니까?
커서, 선택 상태, 내용 등을 알려주는 하나의 중앙 집중식 감속기 대신 개념적으로 쉽게 변형 할 수 있지만 확장 성이 좋지는 않습니다.
I've also read that many times coupled state is a sign that your state isn't minimal 그리고 메모를 작성한 셀렉터를 재구성하고 사용해야합니다. 그러나 그것은 여기에있는 것처럼 보이지 않습니다. 커서의 위치는 텍스트에서 파생 될 수 없으며 선택 상태도 아닙니다.
마지막으로 필자는 Thunk middleware를 여러 가지/복잡한 작업을 처리 할 때 제안한 것으로 보았습니다. 비동기 파견을 위해 더 많은 의미가있는 것처럼 보이기 때문에 나는 주저합니다.
"redux"디자인 패턴과 가장 잘 맞는이 유형의 앱을 디자인하는 올바른 방법을 이해하고 앞으로 여러 가지 방법이있을 경우 발생할 수있는 모든 상충 관계를 이해하고 싶습니다.
저는 이것이 작은 프로젝트가 아니라는 것을 알고 있습니다 :-)이 소프트웨어는 텍스트 편집기와 같은 많은 동작을 사용하는 편집기이기 때문에 기존의 소프트웨어를 사용할 수는 없습니다. 텍스트 편집을 전혀하지 않기 때문입니다. 내가주의 깊게보고있는 한 코드베이스는 codemirror와 비슷하지만 더 이상 사용하지 않는 Draft.js입니다. – Dave