我如何将道具传递给ListHeaderComponent?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何将道具传递给ListHeaderComponent?相关的知识,希望对你有一定的参考价值。

所以我要从第一个组件导航到FooItems页面,并将道具传递给导航。

    showFooItemsPage = () => 
        this.props.navigation.navigate('FooItemsComponent', 
            fooItems: this.props.fooItems);
  ;

在我的FooItemsComponents上,我有一个带有renderItems函数的Flatlist,并且可以正常工作。但是,我想对Flatlist项目列表进行更改,然后单击Flatlist组件标题中的Save。

我目前遇到的主要问题是向我的Flatlist的Header Component发送道具。道具是未定义的,我不知道如何从FooItemsComponent或在页面之间导航时发送道具。

这是我的FooItemsComponent的一些摘录:

class Header extends Component 

    constructor(props) 
        super(props);

    

    async componentDidMount() 
       //call some reducer action 
      

    save = items => 
        this.props.saveItems(items);
        this.props.navigation.navigate("previousComponent");
    

    render() 
        const navigation, loading  = this.props;

        return (
        <View>
            <View style=styles.header>
                <TouchableOpacity onPress=this.save>
                    <Text style=styles.saveText>Save</Text> 
                    </TouchableOpacity>
                </View>
            <View
                style=
                borderTopWidth: 1,
                borderTopColor: Colors.grey,
                height: 1,
                > 
            </View>
        </View>
        );
    


export class FooItemsComponent extends Component 

    constructor(props) 
        super(props);
    

    async componentDidMount() 
        //some reducer action 
      

    renderItem = item => 
         if (item.load) 
          return <ActivityIndicator color=Colors.activityColor size="small" />;
         else 

          return (
              <View>
                <FooItems
                    ...item
                    navigation=this.props.navigation
                    showParticularItems=true
                />
                </View>
          ); 
      ;

    render() 
        const  fooItems, navigation, loading, props = this.props;
        if (!fooItems) fooItems = [];

        return (
            <View style=styles.container>
                <FlatList
                keyExtractor=(item, index) => `key-$index`
                data=fooItems
                renderItem=item => this.renderItem(fooItems.item)
                ItemSeparatorComponent=Separator
                ListHeaderComponent=Header
                ListFooterComponent=loading ? LoadingFooter : Separator
                />
          </View>

        );
    

答案

使用箭头功能并包装标题:

 <FlatList
    keyExtractor=(item, index) => `key-$index`
    data=fooItems
    renderItem=item => this.renderItem(fooItems.item)
    ItemSeparatorComponent=Separator
    ListHeaderComponent=() => <Header yourProps='blabla title'/> 
    ListFooterComponent=loading ? LoadingFooter : Separator
   />

并且在Header组件中使用this.props.yourProps

以上是关于我如何将道具传递给ListHeaderComponent?的主要内容,如果未能解决你的问题,请参考以下文章

如何将对象数组作为道具传递给组件,然后将数组的成员作为道具传递给嵌套组件?

我如何将道具传递给ListHeaderComponent?

如何将道具传递给来自不同来源的组件?

如何将道具传递给组件的故事?

如何将组件中的道具传递给 FlatList renderItem

如何防止将道具传递给内部样式组件