簡體   English   中英

子組件未使用新道具進行更新

[英]Child Component Isn't Updating with New Props

我在讓子組件更新新道具時遇到問題。 我正在從全局狀態中刪除一個項目,並且成功。 但是,當該項目被刪除時,我希望該項目不再顯示。 它仍在顯示,但是如果我要移到另一個屏幕然后返回,它就消失了。 我可能在這里想念的任何想法嗎?

謝謝!!

export default class Summary extends Component {
  constructor(props) {
    super(props);

    this.state = {
      pickupData: this.props.pickup
    };
  }

  handleDelete(item) {
    this.props.deleteLocationItem(item);
  }

  render() {
    const pickup = this.state.pickup;

    return (
      <View>
        {pickup.map((item, i) => (
          <LocationItem
            name={item}
            onPressDelete={() => this.handleDelete(item)}
          />
        ))}
      </View>
    );
  }
}

const LocationItem = ({ onPressDelete, name }) => (
  <TouchableOpacity onPress={onPressDelete}>
    <Text>Hi, {name}, CLICK ME TO DELETE</Text>
  </TouchableOpacity>
);

- - - - 附加信息 - - -

case 'DELETE_LOCATION_INFO':
  return Object.assign({}, state, {
  pickup: state.pickup.filter(item => item !== action.action)
})

export function deleteLocationInfo(x){
  return {
    type: DELETE_LOCATION_INFO,
    action: x
  }
}

您的deleteLocationItem必須是這樣的:

deleteLocationItem(id) {
  this.setState({
   items: this.state.items.filter(item => item.id !== id)
  });
}

然后,在您的Summary類中,您無需再次設置道具。 只需從道具中接收即可,如下所示:

render (

const { pickup } = this.props;
return(
  <View>
    { pickup.map
...

渲染是根據除構造函數以外未更新的狀態發生的。 當prop從父對象更新時,它不會反映在狀態中。 添加componentWillReceiveProps方法以接收新道具並更新狀態,這將導致呈現新數據

但更可取的是,如果初始化后狀態沒有以任何方式更改,請直接使用prop本身進行渲染,這將解決此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM