Рекомендуется решить эту проблему с помощью компонентов более высокого порядка , которые являются компонентами React, которые «обертывают» другой компонент для обеспечения общих функциональных возможностей. Вы должны найти множество ресурсов, объясняющих это, но типичный компонент более высокого порядка выглядит примерно так:
import React from 'react';
const higherOrderComponent = (WrappedComponent) =>
{
class HOC extends React.Component {
render() {
return <WrappedComponent />;
}
}
return HOC;
};
Затем вы можете добавить любую функциональность, которая должна использоваться совместно с компонентом более высокого порядка. Затем вы можете использовать его примерно так:
const SimpleHOC = higherOrderComponent(MyComponent);
РЕДАКТИРОВАТЬ: если вы хотите, чтобы одна и та же функциональность применялась для различных действий редуктора, это просто. Просто используйте один и тот же обратный вызов для разных случаев, как в этом примере:
case 'ACTION_1':
case 'ACTION_2':
case 'ACTION_3':
// callback here
Для вашего приложения это будет примерно так:
case 'EDIT_POST':
case 'LIKE_POST':
case 'UNLIKE_POST':
return state.map(post => {
if (post._id === action.id){
return{
...post,
...action.updates
};
}else{
return post;
}
});