我正在处理React Native项目,并且我意识到React Native似乎打破了React流(Parent to children)道具更新。React Native不更新子组件道具
基本上,我从一个“App”组件调用一个“Menu”组件,将一个道具传递给“Menu”。但是,当我更新“应用程序”状态时,“菜单”上的道具应该更新,但这不会发生。难道我做错了什么?
这是我的代码:
App.js
import React from 'react';
import {
View,
Text
} from 'react-native';
import Menu from './Menu';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
opacity: 2
}
}
componentDidMount() {
setTimeout(() => {
this.setState({
opacity: 4
});
}, 3000);
}
render() {
return(
<View>
<Menu propOpacity={this.state.opacity} />
</View>
);
}
}
export default App;
Menu.js
import React from 'react';
import {
View,
Text
} from 'react-native';
class Menu extends React.Component {
constructor(props) {
super(props);
this.state = {
menuOpacity: props.propOpacity
}
}
render() {
return(
<View>
<Text>Menu opacity: {this.state.menuOpacity}</Text>
</View>
);
}
}
Menu.propTypes = {
propOpacity: React.PropTypes.number
}
Menu.defaultProps = {
propOpacity: 1
}
export default Menu;
不能设置状态里面didmount,让皮斯更新别处。 – Codesingh
@Codesingh yes你可以从'cDM'方法设置状态。你不能从'render'方法这样做。 – Andreyco