Я рекомендую вам взглянуть на React.context (https://reactjs.org/docs/context.html), вы многому научитесь.
Вот как я думаю, вам нужно будет обработать: создайте пользовательский компонент Parent
с привязанным к нему контекстом, затем создайте функцию, которая сможет генерировать ваш список img
тегов, и функция для их изменения (removeImage()
, updateImage()
, getImage()
, ..).
- Создайте свой собственный контекст:
const MyContext = React.createContext(defaultValue);
Создайте свое родительское состояние:
this.state = {
images: [
{
id: 1
url:'url1',
height: '400px',
width: '400px'
},
{
id: 2
url:'url2',
height: '400px',
width: '400px'
}
]
}
}
Создайте свой родительский компонент:
class Parent extends React.Component {
constructor(props) {
super(props);
this.removeImage = (id) => {
// write the function to remove image from this.state.images array using id
}
this.getImage = (id) => {
// write the function to get image from this.state.images array using id
}
this.state = {/* past step 2 here */}
}
render() {
return (
<div>
<MyContext.Provider value={this.state}>
<MyContext.Consumer>
{({images}) => (
<div className="list-image">
{images.map((img) => {
return (<img
imgId={img.id}
src={img.url}
height={img.height}
width={img.width} alt="nothing"
/>);
}
}
</div>
}}
<MyContext.Consumer>
</MyContext.Provider>
</div>
);
}
Таким образом, вы сможете изменить список this.state.imgaes
, который напрямую изменит ваш рендер списка изображений.
Надежда это то, что вы просили;)