Javascript 我能';t在Redux reducer中使用state.filter

Javascript 我能';t在Redux reducer中使用state.filter,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,所以我使用React Redux,在我的reducer中,我想从我的状态中删除一个主机名。所以,环顾四周,我发现state.filter是实现这一点的一个好方法。但是,这不起作用,我的控制台中不断出现错误 index.js import "babel-polyfill"; import React from 'react'; import ReactDOM from 'react-dom'; import {Provider} from 'react-redux'; import thunkMi

所以我使用React Redux,在我的reducer中,我想从我的状态中删除一个主机名。所以,环顾四周,我发现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')
)
;


提前感谢您提供的所有建议或解决方案。

在您的
案例“删除主机名”
中,您正在调用
state.filter
。此时,您的状态将是
对象
,而不是数组

您可能希望执行以下操作:

case 'DELETE_HOSTNAME':
  return { hostnames: state.hostnames.filter(hostname =>
     hostname.id !== action.hostnameId
  )}

那很好用。还有一个问题,所以在redux中,您希望复制您的状态,然后更改副本,以便仍保持以前的状态。在本例中,如何“复制”旧状态?。虽然数组可能是新的,但它只是指向每个主机名的指针的副本,所以要小心更改主机名的内容。@Kujira确定吗?消息来源?
case 'DELETE_HOSTNAME':
  return { hostnames: state.hostnames.filter(hostname =>
     hostname.id !== action.hostnameId
  )}