Bir onay kutusunu işaretledikten sonra bir satır eklemeye çalışıyorum. Reaksiyonu kullanıyorum ve redux. Eylem ve indirgeyici çalışır. checked
true
olduğu zaman bu satır ekleyerek bir yol ihtiyacım var Lütfen bunu aşağıda denedim kodu bulun. Şimdiden teşekkürler.React Redux onay kutusunu işaretleyin onay kutusunu işaretleyin
/actions/items.js
export const CHECK_ITEM = "CHECK_ITEM"
export function checkItem(id) {
return {
type: CHECK_ITEM,
id
}
}
case types.CHECK_ITEM:
return state.map((item) => {
if(item.id === action.id) {
return Object.assign({}, item,
{
checked: !item.checked
})
}
return item
})
/components/Editor.jsx
renderValue =() => {
const onDelete = this.props.onDelete
const onCheck = this.props.onCheck
return (
<div>
{onCheck ? this.renderCheckItem() : null}
<div onClick={this.props.onValueClick}>
<span className='value'>{this.props.value}</span>
{onDelete ? this.renderDelete() : null}
</div>
</div>
)
}
renderCheckItem =() => {
return (
<input
type="checkbox"
className='check-item checked'
defaultChecked={false}
onClick={this.props.onCheck}
/>
)
}
/components/Item.jsx
/reducers/items.jsexport default class Items extends React.Component {
render() {
const {items, onEdit, onDelete, onValueClick, onCheck, isEditing} = this.props
return (
<ul className="items">{items.map(item =>
<Item
className="item"
key={item.id}
id={item.id}>
<Editor
value={item.text}
onCheck={onCheck.bind(null, item.id)}
style={{textDecoration: item.checked ? 'line-through' : 'none'}}
/>
</Item>
)}</ul>
)
}
}
Öğelerimi mağazaya bağlarsam, filtrelememi List bileşenim içinde kaybederim. Başka bir yol olmalı. Listemdeki öğeleri zaten gönderiyorum. @lukasz – Diego