无法使用 class 组件中的道具设置状态
Unable to setState with props in class component
我有一个 class 组件,可以通过 2 个屏幕查看,其中 1 个屏幕正在传递道具,1 个不是。所以我想设置默认值“” 0r 如果没有道具则为空,如果有道具则值应基于道具。但我做不到。任何帮助将不胜感激..流程是这样的..主屏幕==>评级(没有道具所以状态应该是空的)==>搜索屏幕==>评级(有道具。状态应该从状态中获取值)
class Rating extends Component {
constructor() {
super();
const propItem = this.props?.route.params.item;
this.state = {
brand : propItem != undefined ? propItem.brand : "",
我已经尝试过 componentDidMount 但它会导致无限循环如果我在渲染方法中使用它也会如此
getDerivedStateFromProps is invoked right before calling the render method, both on the initial mount and on subsequent updates. It should return an object to update the state, or null to update nothing.
您需要通过 constructor
和 super
功能的优点。
class Rating extends Component {
constructor(props) {
super(props);
const propItem = this.props?.route.params.item;
this.state = {
brand : propItem != undefined ? propItem.brand : ""
}
}
render() {
<div></div>
}
}
class Rating extends Component {
constructor(props) {
super(props);
this.state = {
brand : this.props?.route.params.item != undefined ? this.props?.route.params.item.brand : ""
}}
render() {
<div></div>
}}
您可以试试,确保您传递的是 this.props.navigation
中上一屏幕的项目
我有一个 class 组件,可以通过 2 个屏幕查看,其中 1 个屏幕正在传递道具,1 个不是。所以我想设置默认值“” 0r 如果没有道具则为空,如果有道具则值应基于道具。但我做不到。任何帮助将不胜感激..流程是这样的..主屏幕==>评级(没有道具所以状态应该是空的)==>搜索屏幕==>评级(有道具。状态应该从状态中获取值)
class Rating extends Component {
constructor() {
super();
const propItem = this.props?.route.params.item;
this.state = {
brand : propItem != undefined ? propItem.brand : "",
我已经尝试过 componentDidMount 但它会导致无限循环如果我在渲染方法中使用它也会如此
getDerivedStateFromProps is invoked right before calling the render method, both on the initial mount and on subsequent updates. It should return an object to update the state, or null to update nothing.
您需要通过 constructor
和 super
功能的优点。
class Rating extends Component {
constructor(props) {
super(props);
const propItem = this.props?.route.params.item;
this.state = {
brand : propItem != undefined ? propItem.brand : ""
}
}
render() {
<div></div>
}
}
class Rating extends Component {
constructor(props) {
super(props);
this.state = {
brand : this.props?.route.params.item != undefined ? this.props?.route.params.item.brand : ""
}}
render() {
<div></div>
}}
您可以试试,确保您传递的是 this.props.navigation
中上一屏幕的项目