2016-04-01 21 views
0

Bunun için yeni gözlere ihtiyacım var. Reakt ve Redux'u yavaş yavaş öğrendiğim için tekrar bir barikata girdim.Tepki, Yeniden Yapıştır öğesinin silinmesi tüm öğelerin silinmesi

/actions/items.js 

export const DELETE_ITEM = "DELETE_ITEM" 
export function deleteItem(id) { 
    return { 
    type: DELETE_ITEM, 
    id 
    } 
} 

/components/Item.jsx

export default class Item extends React.Component { 

renderDelete =() => { 
    return <button onClick={this.props.onDelete}>x</button> 
    }; 

    renderItem =() => { 
    const onDelete = this.props.onDelete 

    return (
     <div onClick={this.edit}> 
     <span>{this.props.text}</span> {onDelete ? this.renderDelete() : null} 
     </div> 
    ) 
    } 

/components/Items.jsx

export default class Items extends React.Component { 


    handleOnDelete = (id) => { 
    this.props.dispatch(actions.deleteItem(id)) 
    } 

    render() { 
    const {items, onEdit, onDelete } = this.props 

    return (
     <ul>{items.map(item => 
     <li key={item.id}> 
      <Item 
      id={item.id} 
      text={item.text} 
      onEdit={this.handleOnEdit} 
      onDelete={this.handleOnDelete.bind(null, item.id)} 
      /> 
     </li> 
    )}</ul> 
    ); 
    } 
} 

export default connect(
    state => ({ 
    items: state.items 
    }) 
)(Items) 

/reducers/items.js

case types.DELETE_ITEM: 
    const filteredItems = state.filter((item) => { 
    item.id !== action.id 
    }); 

    return filteredItems 

değilim silmek için neden x düğmesinin tıklandığına emin bir öğe hepsini siler.

cevap

0

Yardım için şimdiden teşekkür ederiz. Redüktörünüzdeki filtrede değer döndürmezsiniz. Parantez olmadan

const filteredItems = state.filter((item) => { 
    return item.id !== action.id; 
}); 

Veya kısa sürümünü kullanın:

Sizin return eklemek gerekir

const filteredItems = state.filter((item) => item.id !== action.id); 
+0

Ah iyi bir noktaya. Böyle bir durumda önce bu tür vardı.DELETE_ITEM: dönüş state.filter ((madde) => item.id! == action.id); ama nedense değişiyor. Teşekkürler Aleksandr – Diego