В настоящее время у меня есть одна проблема с контейнерным подходом, когда дело касается рендеринга компонентов дампа.
Предположим, у меня есть ProductContainer , как показано ниже:
class ProductContainer extends React.Component {
constructor(props) {
super(props);
this.state = { products: [] };
}
getAll(){
// get all products from store
}
addNew(){
// store the product to the store
}
render() {
return (
<ListProductComponent products={this.state.products}>
<AddProductComponent/>
)
}
}
IМожно использовать RedEx для управления магазином, но в этом случае я просто хочу сделать его максимально простым.
Тогда у меня есть еще два компонента дампа, такие как ListProductComponent и AddProductComponent .
const ListProductComponent = (props) => {
return (
<h2>Print out products from {props.products}</h2>
);
};
const AddProductComponent = (props) => {
return (
<h2>AddProductComponent</h2>
);
};
Пока что все очень умно и так плохо, но проблема здесь в том, что касается интеллектуального рендеринга, как сделать так, чтобы интеллектуальный компонент отображал только ListProductComponent дляНапример, или только AddProductComponent отдельно.
В настоящее время у меня есть оба компонента, которые отображаются в моей функции рендеринга из контейнера, я на самом деле хотел бы оставить контейнер для выполнения операции CRUD для продуктаи затем использовать один и тот же компонент для перечисления продуктов, добавляя новый продукт во все другие компоненты дампа.
С текущим значениемЯ не могу добиться этого, я вынужден иметь список и добавить новый продукт в том же виде.
Некоторые люди предлагают, чтобы ListProductContainer и addProductContainer раздельно обрабатывали операции crud, но не слишком ли это разделение?На самом деле я хотел бы оставить Crud в одном интеллектуальном компоненте.
Как мне добиться этого, имея более гибкий рендеринг для очень интеллектуального компонента.
ОБНОВЛЕНИЕ: Возможно, я хотел бы иметь при рендеринге контейнераОтчасти что-то вроде этого, но я не уверен, что что-то подобное сработает.
function renderComponent(Component) {
return <Component />;
}
и затем вызывать этот renderComponent внутри render () для контейнера, но как тогда передать состояние / хранилище или другие атрибуты компоненту дампа?
Учитывая, что ябудет в состоянии сделать то же самое, как это:
<ListProductComponent products={products} fetchProducts={this.getAll}/>
возможность передавать состояние и вызывать методы родителя / контейнера.