下面是我的代码
let mut bh = BinaryHeap::new();
bh.push(0);
bh.push(1);
bh.push(2);
println!("{:?} => {:?}", bh, bh.peek());
// convert into a vector:
let mut v = bh.into_vec();
println!("{:?}", v);
// modify in a way that alters the order:
v[1] = -1;
println!("{:?}", v);
// convert back into a binary heap
let bh: BinaryHeap<_> = v.into();
println!("{:?} => {:?}", bh, bh.peek());
当将true作为isAuthenticated的值传递给LoginApp时,此代码发出如下警告:
警告:setState(...):在现有状态转换期间(例如在渲染或其他组件的构造函数中)无法更新。渲染方法应该纯粹是道具和状态的函数;构造函数的副作用是反模式,但可以将其移至componentWillMount。
到目前为止,无法在LoginApp组件中进行任何更改,因此在LoginContainer中做了一个小的解决方法(我真的不喜欢)
我带来的变化是
LoginContainer的新实现如下
class LoginContainer extends Component {
...
render() {
return <LoginApp isAuthenticated={this.props.isAuthenticated} />
}
}
/* ==> Implemetation of LoginApp is like below <== */
import { browserHistory } from 'react-router';
class LoginApp extends Component {
...
render() {
if (this.props.isAuthenticated) {
browserHistory.push('/dashboard');
return null;
}
/* code to render login form elements....*/
}
}
现在我没有警告,并且我处于某种模式-我的代码正在运行(因为没有警告),但我不知道为什么?
反应版本:15 React-router版本:2.8.1