javascript - 我如何在 React Redux 中访问存储状态?

标签 javascript asynchronous reactjs redux react-redux

我只是在制作一个简单的应用程序来学习 redux 的异步。我已经让一切正常,现在我只想在网页上显示实际状态。现在,我如何在渲染方法中实际访问商店的状态?

这是我的代码(所有内容都在一页中,因为我只是在学习):

const initialState = {
        fetching: false,
        fetched: false,
        items: [],
        error: null
    }

const reducer = (state=initialState, action) => {
    switch (action.type) {
        case "REQUEST_PENDING": {
            return {...state, fetching: true};
        }
        case "REQUEST_FULFILLED": {
            return {
                ...state,
                fetching: false,
                fetched: true,
                items: action.payload
            }
        }
        case "REQUEST_REJECTED": {
            return {...state, fetching: false, error: action.payload}   
        }
        default: 
            return state;
    }
};

const middleware = applyMiddleware(promise(), thunk, logger());
const store = createStore(reducer, middleware);

store.dispatch({
    type: "REQUEST",
    payload: fetch('http://localhost:8000/list').then((res)=>res.json())
});

store.dispatch({
    type: "REQUEST",
    payload: fetch('http://localhost:8000/list').then((res)=>res.json())
});

render(
    <Provider store={store}>
        <div>
            { this.props.items.map((item) => <p> {item.title} </p> )}
        </div>
    </Provider>,
    document.getElementById('app')
);

因此,在状态的渲染方法中,我想列出商店中的所有 item.title

谢谢

最佳答案

您应该创建单独的组件,它将监听状态变化并在每次状态变化时更新:

import store from '../reducers/store';

class Items extends Component {
  constructor(props) {
    super(props);

    this.state = {
      items: [],
    };

    store.subscribe(() => {
      // When state will be updated(in our case, when items will be fetched), 
      // we will update local component state and force component to rerender 
      // with new data.

      this.setState({
        items: store.getState().items;
      });
    });
  }

  render() {
    return (
      <div>
        {this.state.items.map((item) => <p> {item.title} </p> )}
      </div>
    );
  }
};

render(<Items />, document.getElementById('app'));

关于javascript - 我如何在 React Redux 中访问存储状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332912/

相关文章:

c# - 如何使我的构造函数在 UWP MVVM 模型中异步? (MVVM Lighttoolkit)

javascript - react-datepicker 组件中出现未知单词错误

javascript - 通过给定键将两个对象数组合并为一个并复制其他值

javascript - 关于如何在 JavaScript 中创建类的困惑

javascript - 当元素由脚本动态生成并通过类选择器访问时,如何在 Jquery 中的单击事件上调用函数?

javascript - webpack:找不到模块:错误:无法解析(使用相对路径)

javascript - Angular 5 karma 单元测试 : Failed: Cannot read property childcomponent property ( itgroup) of undefined

asynchronous - 如何使用 Play 2.1.1 异步请求和 future

javascript - 单击:Reactjs时如何更改部分字符串的样式

reactjs - 如何从 react-dropzone 中删除文件?