我現在在我的React應用中實現了像Flash消息這樣的Rails。 閃光消息本身很好,但現在我想讓閃光消息在某些頁面中自動消失。 我起初在我的Flash組件中使用了setTimeout,但收到了這個錯誤。未被捕獲的錯誤:不變違例:enqueueCallback(...):您使用不可調用的回調調用了setProps,replaceProps,setState,replaceState或forceUpdate。反應:使閃光消息自動消失
這是代碼。
import React from 'react/addons';
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
class Flash extends React.Component {
constructor(props) {
super(props);
this.state = {
message: this.props.message
}
}
componentWillReceiveProps(nextProps) {
let _this = this;
this.setState({
message: nextProps.message
});
if (nextProps.autoDisappear) {
window.setTimeout(() => {
_this.setState({
message: null
}, 2000)
})
}
}
onClick(e) {
this.setState({
message: null
});
}
render() {
let transitionName = "flash-anim"
if (this.state.message) {
return (
<ReactCSSTransitionGroup transitionAppear={true} transitionName={transitionName} transitionEnterTimeout={200} transitionLeaveTimeout={300}>
<div className="flash-container" id="flash-component">
<div className="alert">
<a className="close alert-close" onClick={this.onClick.bind(this)}>x</a>
{this.state.message}
</div>
</div>
</ReactCSSTransitionGroup>
);
} else {
return <ReactCSSTransitionGroup transitionAppear={true} transitionName={transitionName} transitionEnterTimeout={200} transitionLeaveTimeout={300} />;
}
}
}
export default Flash;
我考慮用其他方法來解決這個問題,但到目前爲止還沒有想法。你有什麼想法來解決這個問題嗎?
謝謝你的回答。是的,它的工作。我應該檢查兩次。另外,感謝您提供有關'this'的建議。 –