我正在做一个React-Native项目,我意识到React-Native似乎打破了React-flow(父到子)道具更新。
基本上,我是从“应用程序”组件调用“菜单”组件,将一个道具传递给“菜单”。然而,当我更新“应用程序”状态时,“菜单”上的道具应该更新,但这不会发生。我做错什么了吗?
这是我的密码:
一个pp.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;
菜单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;
React没有中断数据流。。。你是。初始状态初始化后,当父级发送更新的道具时,您忘记了更新菜单的状态。
试试这个。。。
class Menu extends React.Component {
constructor(props) {
super(props);
this.state = {
menuOpacity: props.propOpacity
}
}
componentWillUpdate(nextProps, nextState) {
nextState.menuOpacity = nextProps.propOpacity;
}
render() {
return(
<View>
<Text>Menu opacity: {this.state.menuOpacity}</Text>
</View>
);
}
}
我有以下结构: ChildComponent只是呈现值:
这是具有状态(值和项)的父组件。我试图将值状态作为道具传递给子组件。当我点击按钮时,在render方法中执行的代码正在执行切换。但当我调用componentDidMount中的list函数时,切换不起作用,但执行了click事件。 这是我的子组件,其中状态作为道具传递 我知道组件didmount只执行一次。但是除了在render方法中直接编写JSX之外,如何使它工作呢
parentcomponent.js ChildComponent.js 为什么在单击后,子组件仍然显示旧值而不重新呈现?
我正在呈现一个自定义模态组件,该组件基于从父组件传入的道具来显示。道具最初为,然后通过按钮在父组件中更新。我正在通过render函数中的语句检查组件状态。当组件首次初始化时,它会像预期的那样记录,但当isVisible更新时,它会返回。为什么状态不随道具更新? 我知道这可能是非常基本的组件生命周期的东西,但我无法从文档中找到它,而且我是一个相当新的反应者。
为什么在下面的伪代码示例中,当容器更改foo.bar时,Child没有重新呈现? 即使我在修改容器中的值后调用,Child仍然显示旧值。
我有一个React应用程序,其中来自父组件的道具被传递到子组件,然后道具设置子组件的状态。 如何让它更新子组件上的状态? 我的精简代码: