首页 > 解决方案 > 如何使用 Button 将函数从一个组件调用到另一个组件

问题描述

Submit()在一个具有名称的组件中创建了一个函数,formSignup.js并创建了另一个名称buttonSubmit.js包含 Button(onPress) 的组件,该按钮我想调用Submit()f 中的函数ormSignup.js

为提交按钮创建单独组件的原因是,我为动画编写了很多代码,并且我想在loginComponent.js.

formSignup.js

submit = () => {
...
}

按钮提交.js

How can i call submit function from  fromSignup.js here

  _onPress() {
    if (this.state.isLoading ) return;

    this.setState({isLoading: true});
    Animated.timing(this.buttonAnimated, {
      toValue: 1,
      duration: 200,
      easing: Easing.linear,
    }).start();

    setTimeout(() => {
      this._onGrow();
    }, 2000);

    setTimeout(() => {
      Actions.mainScreen();
      this.setState({isLoading: false});
      this.buttonAnimated.setValue(0);
      this.growAnimated.setValue(0);
    }, 2300);

  }
-----
return(
          <TouchableOpacity
            onPress={this._onPress}
            activeOpacity={1}>
            {this.state.isLoading ? (
              <Image source={spinner} style={styles.image} />
            ) : (
              <Text style={styles.text}>Go</Text>
            )}
          </TouchableOpacity>
);

标签: javascriptreact-native

解决方案


在你的情况下,我有一个疑问。

您在 formSignup.js 组件中使用 buttonSubmit.js 组件吗?

如果,您可以通过将函数作为道具传递来实现它。

//FormSignup.js
const FormSignup = () =>{
    const submit = () => {
        // some submit logic
    };

  //render
    return (
        <View>
            ....
            // if you are using the ButtonSubmit component in FormSignup.js, you 
            // can get function by props

            <ButtonSubmit onPressButton = {()=>submit()}/>
        </View>
    )
}


//ButtonSubmit.js
const ButtonSubmit = (props) => {
    return (
        <TouchableOpacity onPress={props.onPressButton}>
            <Text>submit</Text>
        </TouchableOpacity>
    )
}

如果,您应该单独编写该函数并将其导入 ButtonSubmit.js 组件

// Utility.js

const submit = () => {
    // submit logic
};

export {submit};

//================================//
//ButtonSubmit.js

import { submit } from './path/Utility.js'  // import the submit method

const ButtonSubmit = () => {
    return (
        <TouchableOpacity onPress={()=>submit()}>
            <Text>submit</Text>
        </TouchableOpacity>
    )
}


推荐阅读