react-admin:调度操作以存储来自动态请求的元数据

时间:2019-02-10 05:52:33

标签: javascript reactjs redux react-redux react-admin

您好,这个问题是this one的继续!

我正在通过ajax请求动态获取路由(在官方文档“运行时声明资源”中的this文章之后),我正在使用async函数从ajax返回资源列表请求。

分派操作以存储元数据的最佳方法是什么,该方法是我在redux中通过ajax请求获得的,以便以后访问?

此外,当用户尚未登录时,此功能将不返回任何内容,登录后,用户将可以访问几个资源。重新加载资源的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

要使其正常工作,我添加了一个私有变量,该变量存储问题中提到的数据,并通过从该文件导出的另一个函数访问它。

这给了我我所需的东西,但是我不知道这是否是最好的选择。

答案 1 :(得分:0)

最好的选择是使用- alert: Alert for: 5m expr: ... annotations: timestamp: > time: {{ with query "time()" }}{{ . | first | value | humanizeTimestamp }}{{ end }} https://redux-saga.js.org/docs/introduction/BeginnerTutorial.html

然后

redux-saga

如果您不能使用redux-saga,我喜欢使用带有私有变量的解决方案。您应该继续这样做。

答案 2 :(得分:-1)

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

redux-actions真的很容易设置。配置存储,然后可以在一个文件中设置每个状态值:

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)