act-admin: диспетчерское действие для хранения метаданных из динамического запроса - PullRequest
0 голосов
/ 10 февраля 2019

Привет, этот вопрос является продолжением этого !

Я получаю свои маршруты динамически с помощью запроса ajax (после этой статьи в официальных документах«Объявление ресурсов во время выполнения»), я использую асинхронную функцию для возврата списка ресурсов из запроса ajax.

Каков наилучший способ отправки действия для хранения метаданных, которые я получил в формеajax-запрос в redux, для последующего доступа?

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

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Лучший вариант - использовать redux-saga.https://redux -saga.js.org / docs / Введение / BeginnerTutorial.html

Тогда

export function* async() {
  yield fetch(); //your Ajax call function
  yield put({ type: 'INCREMENT' }) //call your action to update your app
}

Если вы не можете использовать саунду, якак ваше решение с частной переменной.Вы должны идти вперед с этим.

0 голосов
/ 14 февраля 2019

https://github.com/redux-utilities/redux-actions

redux-действия действительно просты в настройке.Настройте хранилище, а затем вы можете настроить каждое значение состояния в одном файле:

import { createAction, handleActions } from 'redux-actions'

let initialState = { myValue: '' }

export default handleActions({
  SET_MY_VALUE: (state, action) => ({...state, myValue: action.payload})
})

export const setMyValue = createAction('SET_MY_VALUE')

export const doSomething = () => {
  return dispatch => {
    doFetch().then(result => {
      if (result.ok) dispatch(setMyValue(result.data))
    })
  }
}

Затем в вашем компоненте вы просто подключаетесь и можете получить доступ к значению состояния

import React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'

class MyComponent extends React.Component {
  render = () => (
    <span>{this.props.myValue}</span>
  )
}

MyComponent.propTypes = {
  myValue: PropTypes.string.isRequired
}

const mapStateToProps = (state) => ({
  myValue: state.myState.myValue
})

const mapDispatchToProps = () => ({})

export default connect(mapStateToProps, mapDispatchToProps)(MyComponent)
0 голосов
/ 13 февраля 2019

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

Это дает мне то, чтоМне нужно, но я не знаю, лучший ли это путь.

...