函数执行两次

时间:2018-03-26 23:40:07

标签: javascript reactjs redux react-redux

我无法理解为什么我的函数 returnSlidesReducer()执行两次。 我正在使用Redux。

我的reducer文件 slides.js 是(读取json文件并将数据返回到商店):

import jsonFile from '../sliderContent.json';

const returnSlidesReducer = (slidesContent) => {
  console.log(slidesContent);
  return slidesContent;
}

returnSlidesReducer(jsonFile);

export default returnSlidesReducer;

我的 index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import {
  createStore
} from 'redux';
//import allReducers from './reducers';
import SlidesReducer from './reducers/slides';

const store = createStore(SlidesReducer);

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

在控制台中我得到:

  1. {slider:Array(3)}
  2. 未定义
  3. 因为在商店里我得到 undefined

1 个答案:

答案 0 :(得分:1)

请参阅Redux doc:

中示例todo应用中的reducer
function todos(state = [], action) {
  switch (action.type) {
    case 'ADD_TODO':
      return state.concat([action.text])
    default:
      return state
  }
 }

let store = createStore(todos, ['Use Redux'])

您不需要像您一样明确调用缩减器功能。

如果要将json对象用作初始状态,可以将其作为第二个参数传递给createStore(..)

createStore(returnSlidesReducer, jsonFile);

另一方面,您的减速机功能不是标准的redux减速机表格。我建议关注the official Redux example