Где хранить аутентифицированный профиль пользователя в приложении реакции / редукции - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в Redux и создаю приложение React / Redux. Пользователь войдет в приложение, и когда пользователь будет аутентифицирован, я планирую вернуть профиль пользователя, который будет состоять из: 1. Фамилия пользователя 2. Имя пользователя 3. Адрес электронной почты пользователя 4. Группа пользователей.

Когда пользователи начнут переходить от страницы к странице, я буду использовать группу пользователей, к которой они принадлежат, чтобы скрыть / показать некоторые разделы на разных компонентах / страницах.

Где я могу хранить эту информацию о профиле пользователя, котораядолжен быть доступен из любого из моих компонентов, если это необходимо. Будем благодарны за ссылки на некоторые коды.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Вы можете создать редуктор с помощью initalState

 const initialState = {
     firstname: '',
     lastname: '',
     email: '',
     ...
 }

после того, как мы хотим создать диспетчерскую функцию, которая получает данные с сервера и отправляет их для хранения.

export const funnyDispatch = () => async dispatch => {
    const response = await fetch('http://example.com/api');
    dispatch({
       type: 'FUNNY_DATA',
       payload: response.userData
    })
}

, затем объявляет функцию редуктора, котораяописывает, как изменяется состояние.

function FunnyReducer(state=initalState, action){
     switch(action.type){
         case 'FUNNY_ACTION': 
             return {
                ...state,
                firstname: action.payload.firstname, //firstname is property from data which is fetched from server (userData)
                lastname: action.payload.lastname,
                email: action.payload.email
             }
         default: return state
     }
}

и Vualla, мы получили наши данные в хранилище.

проверьте сокращение документов для получения более подробной информации

РЕДАКТИРОВАТЬ

и когда вам нужно получить данные из хранилища, вы можете использовать метод connectact-redux.

вы объявляете переменную mapStateToProps (вы можете выбрать любое имя), которая принимает состояние какаргумент (мы не можем назвать его хранилищем, потому что это не экземпляр хранилища, это значение состояния) и возвращает требуемые свойства из начального состояния (объявленного в вашем редукторе)

const mapStateToProps = state => ({
    firstname: state.yourReducerName.firstname,
    lastname: state.yourReducerName.lastname
})
// yourReducerName is name you give your reducer when you config your store with createStore or combineReducers

, тогда вы просто экспортируете

 export default connect(mapStateToProps, {
     yourDispatchFunction: (dispatch) => {} //you can export funnyDispatch in this component and put it here
 })(YourComponent);

и вы получаете свойства состояния с помощью

this.props.lastname

, и вы можете отправить функцию в свой обработчик событий (или метод жизненного цикла) следующим образом:

this.props.nameYouGaveToFunnyDispatch()
0 голосов
/ 08 ноября 2019

Хранение информации о пользователях в хранилище избыточностей очень распространено. Затем вы должны использовать mapStateToProps на любом компоненте, которому требуется доступ state.users

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...