【发布时间】:2016-06-01 16:47:34
【问题描述】:
假设你有一个名为 Banner 的渲染组件;
var Banner = React.createClass({
getInitialState: function() {
return { text: this.props.word };
},
render: function(){
return <div>this.state.text</div>
}
})
var banner = ReactDom.render( <Banner word="hello" />, document.getElementById('banner'));
是否可以在不更换组件的情况下更新 Banner 的 props?例如下面的函数
function changeText(component, text){
// change text inside banner
}
changeText(banner, 'Goodbye')
显然在这个例子中,用新文本重新初始化横幅会容易得多,但我希望横幅在文本更改时有动画,但在初始化时没有动画
【问题讨论】:
-
您可以使用componentWillReceiveProps 然后set some state 来指示动画应该发生。显然,您需要一种将新组件传递到 Banner 的机制。为此,您可以创建一个包装组件,轮询横幅文本或其他内容,然后设置横幅
word属性。 React 将完成剩下的工作。