我一直在研究React應用程序,並且已經到了需要Redux處理某些方面的地步。將Redux添加到現有的React應用程序
在閱讀了大量教程之後,我相當堅持如何讓我的「智能」組件「笨拙」並將功能移到我的動作和縮減器中。
因此,例如,應用程序的一個方面是更多的待辦事項清單樣式。
我的一個類的開始是這樣的:
export default class ItemList extends React.Component {
constructor() {
super();
this.state = { items: [],
completed: [],
};
this.addItem = this.addItem.bind(this);
this.completeItem = this.completeItem.bind(this);
this.deleteItem = this.deleteItem.bind(this);
}
addItem(e) {
var i = this.state.items;
i.push({
text: this._inputElement.value,
paused: false,
key: Date.now()
});
this.setState({ items: i });
e.preventDefault();
this._inputElement.value = '';
this._inputElement.focus();
}
completeItem(e) {
this.deleteItem(e);
var c = this.state.completed;
c.push({
text: e.target.parentNode.parentNode.getElementsByClassName('item-name')[0].innerHTML,
paused: false,
key: Date.now()
});
this.setState({ completed: c });
}
deleteItem(e) {
var i = this.state.items;
var result = i.filter(function(obj) {
return obj.text !== e.target.parentNode.parentNode.getElementsByClassName('item-name')[0].innerHTML;
});
this.setState({ items: result });
}
// ... more irrelevant code here ...
// there's a function called createTasks that renders individual items
render() {
var listItems = this.state.items.map(this.createTasks);
return <div className="item-list">
<form className="form" onSubmit={this.addItem}>
<input ref={(a) => this._inputElement = a}
placeholder="Add new item"
autoFocus />
<button type="submit"></button>
</form>
{listItems}
</div>;
}
}
所以,你可以看到,這是非常邏輯沉重。我已經開始在我的索引文件中添加<Provider>
加入終極版,並取得了基本的減速器文件是相當空至今:
import { combineReducers } from 'redux';
const itemList = (state = {}, action) => {
};
// ... other irrelevant reducers
const rootReducer = combineReducers({
itemList,
// ...
});
export default rootReducer;
...我已經做了一個行動的文件,不還有很多。
我一直在努力弄明白:我看到的只是返回某種JSON的例子
- 大多數操作,我該怎麼在使用該JSON,我的組件可以使用減速機返回?
- 我的組件邏輯有多少可重用,或者我應該忘記它?什麼是最好的方式去重複使用儘可能多的代碼?