2
私はReact-Reduxを使用しています。私のレデューサーでは自分の状態からホスト名を削除したいと思います。だから周りを見て、私はstate.filterがこれを達成する良い方法だと分かった。しかし、これは動作していない、私は私のコンソールでエラーが発生し続けます。Reduxレデューサーでstate.filterを使用できません
index.jsすべての提案や解決策を事前に
import "babel-polyfill";
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger'
import { HostnameAppContainer } from './components/HostnameApp';
import {createStore, applyMiddleware} from 'redux';
import hostnameApp from './reducer'
import {fetchHostnames} from './action_creators'
const loggerMiddleware = createLogger()
const store = createStore(
hostnameApp,
applyMiddleware(
thunkMiddleware, // lets us dispatch() functions
loggerMiddleware // neat middleware that logs actions
)
)
store.dispatch(fetchHostnames())
ReactDOM.render(
<Provider store={store}>
<HostnameAppContainer />
</Provider>,
document.getElementById('app')
)
;
reducer.js
export default function(state = {hostnames:[]}, action) {
switch (action.type) {
case 'FETCH_HOSTNAMES':
return Object.assign({}, state, {
hostnames: action.hostnames
})
case 'DELETE_HOSTNAME':
return state.filter(hostname =>
hostname.id !== action.hostnameId
)
case 'ADDED_HOSTNAME':
return Object.assign({}, state, {
hostnames: [
...state.hostnames,
action.object
]
})
}
return state;
}
ありがとう。
を。もう一つの質問ですので、あなたはあなたの状態をコピーしてコピーを変更して、以前の状態を維持したいと思っています。この例では、元の状態をどうやってコピーしていますか? – Matthias
[filter()メソッドは、指定された関数によって実装されたテストに合格するすべての要素を含む新しい配列を作成します。](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/フィルタ)。配列は新しいかもしれませんが、それは各ホスト名へのポインタの単なるコピーなので、hostnameの内容を変更することに注意してください。 – Kujira
@Kujiraあなたは本当ですか?ソース? – softcode