javascript - 子组件未使用新 Prop 更新

标签 javascript reactjs react-native

我在使用新 Prop 更新我的子组件时遇到问题。我正在从全局状态中删除一个项目并且成功。但是当该项目被删除时,我希望该项目不再显示。它仍在显示,但如果我移动到另一个屏幕然后再返回,它就会消失。知道我在这里可能会缺少什么吗?

谢谢!!

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 类中,您不需要再次设置该 Prop 。只需从这样的 Prop 中接收拾取:

render (

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

关于javascript - 子组件未使用新 Prop 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51272970/

相关文章:

javascript - 单击新元素后如何删除/删除添加到标签的类。?

Javascript:动态计算输入值

reactjs - React JS 虚拟主机

ios - 不变违规 : Native component for "RCTImageView" does not exist

javascript - 在我的日期验证中合并前导零

javascript - 如何在页面加载后订阅 channel - ActionCable、DelayedJob

javascript - React 如何将子组件 onClick 链接到父状态

javascript - Firebase 重写路径功能不起作用

javascript - 更新reducer中的数组项

javascript - 我创建了一个 native react 应用程序,每次都必须刷新屏幕才能从 firebase 获取新添加的数据。我正在使用钩子(Hook)