Pracuję nad aplikacją React i dotarłem do punktu, w którym będę potrzebował Redux, aby poradzić sobie z niektórymi aspektami.Dodawanie Redux do istniejącej aplikacji React
Po przeczytaniu kilku tutoriali utknąłem na tym, jak sprawić, by moje "inteligentne" komponenty "dusiły" i przenosiły funkcje do moich działań i reduktorów.
Na przykład jeden aspekt aplikacji jest bardziej stylem listy rzeczy do zrobienia.
Jeden z moich klas zaczyna tak:
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>;
}
}
Więc, jak widać, jest to bardzo logiczny ciężki. Zacząłem dodanie Redux dodając <Provider>
w moim pliku indeksu, wykonane podstawowego pliku reduktory, który jest dość pusta do tej pory:
import { combineReducers } from 'redux';
const itemList = (state = {}, action) => {
};
// ... other irrelevant reducers
const rootReducer = combineReducers({
itemList,
// ...
});
export default rootReducer;
... i zrobiłem plik działań, które nie jeszcze wiele w nim masz.
Byłem stara się dowiedzieć:
- Większość działań Widziałem przykłady po prostu wrócić jakiś JSON, co mogę zwrócić w reduktor, który wykorzystuje to, że moje JSON komponent może używać ?
- Ile elementów mojej logiki komponentowej można użyć do ponownego użycia, czy powinienem ją po prostu zapomnieć? Jaki jest najlepszy sposób na to, aby ponownie użyć tyle kodu, ile napisałem, jak to możliwe?