Создать пакет Reactjs NPM с помощью redux - PullRequest
0 голосов
/ 02 августа 2020

Я собираюсь создать пакет npm в reactjs. Где мне нужно получить доступ к redux reducer того приложения, которое использует этот пакет.

Например, вот некоторые файлы из моего пакета.

RouterLink

export default function RouterLink(props){
    const userLogin = useSelector(state => state.user.isLogin);

if (props.privateRoute){
     if(!userLogin){
       return <Redirect to="/sign-in" />
     }
}
// Other code
}

MenuGenerator

 export default function MenuGenerator(props){
      const userType = useSelector(state => state.user.type);

     // Other code
 }

Существуют и другие файлы, которые зависят от user reducer. Таким образом, другие люди могут создавать редуктор с именем user, иначе он будет не работает.

Например, в моем reactjs, где я использую этот пакет.

 export default function userReducer(state = {isLogin: true, type: 'main'}, action){
   // other code
 }

 // It will work because it has same name `user`
 const reducers = combineReducer({ user: userReducer });

 // Suppose someone added with other name it will not work
 const reducers = combineReducers({ userAccount: userReducer });

Я знаю, что могу передать user данные в props для каждого компонента из мой пакет. Но на самом деле это всего лишь фиктивный вариант использования. Это очень сложно. Я не могу напрямую передавать данные в props. Итак, мне нужно использовать redux в моем пакете и получить доступ к состояниям редуктора, используя useSelector()

Как я могу решить эту проблему. или есть ли способ передать данные user в свой пакет только один раз и использовать их в каждом компоненте в моем пакете.

...