React - Call parent method in child component

后端 未结 2 1607
南旧
南旧 2020-11-30 10:49

I have a parent and child compoents and I want to call a parent method in the child component like this:

import Parent from \'./parent.js\';
class Child exte         


        
相关标签:
2条回答
  • 2020-11-30 11:19

    Try this. Passing the function down as props to the child component.

    import Parent from './parent.js';
    class Child extends React.Component {
        constructor(props) {
            super(props);
            };
    
        click = () => {
            this.props.parentMethod();
        }
    
        render() {
              <div onClick={this.click}>Hello Child</div>
        }
    }
    
    class Parent extends React.Component {
        constructor(props) {
            super(props);
            };
    
        someMethod() {
            console.log('bar');
        }
    
        render() {
              <Child parentMethod={this.someMethod}>Hello Parent, {this.props.children}</Child>
        }
    }
    
    0 讨论(0)
  • 2020-11-30 11:38

    You can try doing something like calling the function of parent by passing the state of your parent to the child and then call using the props in child class.

    class FlatListItem extends Component{
    constructor(props){
        super(props)
    
    }
    render(){
    
        return(
                 <TouchableOpacity style={styles.button} 
                                        onPress= 
                                   {(item)=>this.props.parentFlatlist.delete(item)}></TouchableOpacity>
            </Swipeout>
        )
    }}
    

    And now consider you have a parent class RandomList:

    class RandomList extends Component{
    static navigationOptions = ({navigation}) =>{
        return{
            headerTitle: 'Random List'
        }
    };
    
    state = {
        lists : [],
        refreshing : false
    }
    
    constructor(props){
        super(props)
    
    }
    delete= (item) =>{
    //delete your item
          console.log(item)
    }
        render(){
            return(
                <BackgroundImageComponent>
                                <FlatList
                                    keyExtractor={item => item}
                                    data = {this.state.lists}
                                    renderItem = {({item,index}) => (
                                   <FlatListItem onPress={()=>this.seeTheList(item)} item1={item} parentFlatList={this} index={index}>
    
                                   </FlatListItem>
                                )}
                                />
                            </ScrollView>
            </BackgroundImageComponent>
        )
    }}export default RandomList
    

    See here, I am passing parentFlatlist={this} and then would be using the same instance later in the child class. The main idea is to focus upon the way I am able to render the delete function and not to focus upon the code. Forgive me if the code is misplaced or broken.

    0 讨论(0)
提交回复
热议问题