Есть ли способ отменить действие или игнорировать его?
Или, вернее, лучший/рекомендуемый способ игнорировать действие?
У меня есть следующий создатель действия, и когда я ввожу недопустимый размер (скажем 'some_string'
) в создателя действия, помимо получения моего собственного предупреждающего сообщения я также получаю:
Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
import { SET_SELECTED_PHOTOS_SIZE } from './_reducers';
export default (size=0) => {
if (!isNaN(parseFloat(size))) {
return {
type: SET_SELECTED_PHOTOS_SIZE,
size: size,
};
} else {
app.warn('Size is not defined or not a number');
}
};
Я обсуждал это в redux
-канале в Discord (reactiflux), где одно предложение заключалось в том, чтобы использовать decux-thunk следующим образом:
export default size => dispatch => {
if (!isNaN(parseFloat(size))) {
dispatch({
type: SET_SELECTED_PHOTOS_SIZE,
size: size,
});
} else {
app.warn('Size is not defined or not a number');
}
}
Другой вариант - игнорировать действие внутри редуктора. Это делает редуктор "более толстым", потому что тогда у него больше обязанностей, но он использует меньше thunk-действий, что упрощает отладку. Я мог видеть, как ударный шаблон выходит из-под контроля, так как я буду вынужден использовать его почти для каждого действия, делая частичные действия немного больными, если их у них будет много.