Response.js: удаление компонента
Я новичок в response.js, поэтому любая помощь очень ценится.
У меня есть это: http://jsfiddle.net/rzjyhf91/
В котором я создал 2 компонента: изображение и кнопку.
Цель состоит в том, чтобы удалить изображение одним нажатием кнопки, для этого я использую unmountComponentAtNode
, но он не работает:
var App = React.createClass({
render: function() {
return (
<div><MyImage /><RemoveImageButton /></div>
);
}
});
var MyImage = React.createClass({
render: function() {
return (
<img id="kitten" src={'http://placekitten.com/g/200/300'} />
);
}
});
var RemoveImageButton = React.createClass ({
render: function() {
return (
<button onClick={this.handleClick}>remove image</button>
)
},
handleClick: function(){
React.unmountComponentAtNode(document.getElementById('kitten'));
}
});
React.render(<App />, document.body);
Как удалить компонент реакции из другого компонента?
Ответы
Ответ 1
Ну, похоже, вам нужно переосмыслить, как обрабатывается управление дисплеем. Реагирование - это все изолированные компоненты, и поэтому вы не должны размонтировать компонент, который монтируется родительским компонентом. Вместо этого вы должны использовать обратный вызов, переданный через props
, чтобы выполнить что-то подобное.
Ваша фактическая реализация будет зависеть от вашего варианта использования, но обновленная версия вашего примера, которая работает, находится по адресу: http://jsfiddle.net/nt99zzmp/1/
var App = React.createClass({
render: function() {
var img = this.state.showImage ? <MyImage /> : '';
return (
<div>{img}<RemoveImageButton clickHandler={this.removeImage} /></div>
);
},
getInitialState: function() {
return {
showImage: true
};
},
removeImage: function() {
this.setState({ showImage: false });
}
});
var MyImage = React.createClass({
render: function() {
return (
<img id="kitten" src={'http://placekitten.com/g/200/300'} />
);
}
});
var RemoveImageButton = React.createClass ({
render: function() {
return (
<button onClick={this.props.clickHandler}>remove image</button>
)
}
});
React.render(<App />, document.body);
Ответ 2
В основном устранение компонента не имеет смысла в React, вы, вероятно, все еще думаете о способах jQuery, в основном во всех современных и новых библиотеках JavaScript, включая React, вы должны управлять своим компонентом с помощью state
или route
для обработки этих вещи, удаляющие элемент или компонент, не являются хорошим способом сделать это в React или Angular, например.
Например, вы можете иметь логическое значение в этом случае, и если оно истинно, покажите свое изображение, иначе скройте его или даже верните другой элемент в свой компонент.
![введите описание изображения здесь]()
Итак, в этом случае у вас есть компонент, который будет возвращаться по-разному, зависит от props
или state
... что-то вроде этого:
////
var MyImage = React.createClass({
render: function() {
if(this.state.showImage) {
return (
<img id="kitten" src={'http://placekitten.com/g/200/300'} />
);
} else {
return<p>no image!</p>;
}
}
});
////