2017-06-24 35 views
0

私はReduxチュートリアルを実行し、いくつかの例を自分で実行して練習しました。未定義の 'map'のプロパティを読み取ることができません

私はエラーにCannot read property 'map' of undefined

コードを取得しています:

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Provider } from 'react-redux' 
import { connect } from 'react-redux' 
import { createStore } from 'redux' 




const todo = (state, action) => { 
    console.log('todo ran') 
    switch (action.type) { 
     case 'ADD_TODO': 
      return { 
       id: action.id, 
       text: action.text 
      } 
     default: 
      return state 
    } 
} 

const todos = (state = [], action) => { 
    console.log('todos ran') 
    switch (action.type) { 
     case 'ADD_TODO': 
      return [ 
       ...state, 
       todo(undefined, action) 
      ]; 
    } 
} 
//Just updated this to include an empty list 
let store = createStore(todos, []) 


let nextTodoId = 0 
const AddTodo =() => { 
    let input; 

    return (
     <div> 
      <input ref={node => {input = node}}/> 
      <button onClick = {() => { 
       store.dispatch({ 
        type: 'ADD_TODO', 
        id: nextTodoId++, 
        text: input.value 
       }); 
       input.value = '' 
      }}> 
       Add Todo 
      </button> 
      <ul> 
       {store.getState().map(item => 
        <li key={item.id}> {item.text} </li> 
       )} 
      </ul> 
      <button onClick = {() => console.log(store.getState())}>Print State</button> 

     </div> 
    ) 
}; 


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

は私が空の状態[]に渡すと、私はそれの上にマップすることにしています思いました。しかし、stateは未定義のようです。

私は間違っていますか?

答えて

2

createStoreコールには初期状態を渡していません。

は、次の試してみてください。

let store = createStore(todos, []) 
+0

hmmm ...それを試しても同じ問題がありました。コードの更新。 –

+0

あなたはたぶんこれをフィドルに入れて、言葉を取引するだけではないのですか? –

0

は、私が追加するのを忘れ:

default: return state

todosの下部にあります。

関連する問題