'Renders too much components
I have a columns and cards in it. When i click on card it should expand. At first i wanted to watch how it looks. But instead one card modal window it rendered four. By the number of columns.
So for the test i have an array with data:
const dataSource = [
{
title: 'TODO',
cards: [
{
title: 'card1',
data: 'data1',
author: 'ABOBA',
comments: 10
}, {
title: 'card2',
data: 'data2',
author: 'ABOBA',
comments: 10
}, {
title: 'card3',
data: 'data3',
author: 'ABOBA',
comments: 10
},
]
},
...
]
It is how i render cards:
return (
<StyledContentBlock>
{dataSource.map((item, index) =>
<Column title={item.title} key={index}>
{item.cards.map((card, index) => <Card dataSource={card} key={index}/>)}
</Column>)}
</StyledContentBlock>
)
It is code for card:
import React, {FunctionComponent} from 'react';
import {ICardProps} from "./interfaces";
import {StyledCard} from "./styles";
import ModalCard from "../ModalCard";
const Card: FunctionComponent<ICardProps> = (props) => {
const {dataSource} = props
const {title, data, comments, author} = dataSource
return (
<StyledCard onClick={() => <ModalCard dataSource={dataSource}/>}>
{title}
</StyledCard>
)
};
export default Card;
And modal card code:
import React, {FunctionComponent} from 'react';
import {CardExpandedBlock, StyledModalCard} from "./styles";
import {ICardProps} from "../Card/interfaces";
const ModalCard: FunctionComponent<ICardProps> = (props) => {
const {dataSource} = props
const {title, data, author, comments} = dataSource
return (
<>
<CardExpandedBlock/>
<StyledModalCard>
</StyledModalCard>
</>
)
};
export default ModalCard;
So I cant understand why it renders 4 times modal window, and how to solve this.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
