javascript - Reactjs 将 props 传递给 2 个组件

标签 javascript reactjs

在我的项目中,我有一个付款表单,它有条件地呈现 2 个 Stripe 元素(PaymentRequestForm.js 和 CheckoutForm.js),我已将 Props 从主表单组件 FullfillRequest.js 传递到 PaymentRequestForm.js,但是我努力将相同的 props 传递给 CheckoutForm.js。 该 Prop 的功能是在 Stripe 付款完成后提交表单。

在当前设置下,错误是 this.props.setComplete() 在 CheckoutForm.js 中未定义。

FulfillRequest.js

  setComplete = val => {
    this.setState({
      complete: val
    });
  };

 render() {
return <PaymentRequestForm
setComplete={this.setComplete}
complete={this.state.complete}
requestId={this.props.requestId}
/>

  <Button disabled={loading || !this.state.complete} >
 Fulfill Request
</Button>
}

PaymentRequestForm.js

class PaymentRequestForm extends React.Component {
  constructor(props) {
    super(props);

   paymentRequest.on("token", async ev => {
      const response = await fetch();
      if (response.ok) {
            this.props.setComplete(true);
      } 
    });

    this.state = {
      canMakePayment: false,
      paymentRequest,
      complete: false
    };
  }

  render() {
    if (this.props.complete) return <h1>Purchase Complete</h1>;
     return this.state.canMakePayment ? (
      <PaymentRequestButtonElement />
    ) : (
      <CheckoutForm
        setComplete={this.setComplete}
        complete={this.state.complete}
        requestId={this.props.requestId}
      />
    );

CheckoutForm.js

class CheckoutForm extends Component {
  constructor(props) {
    super(props);
    this.state = { complete: false };
    this.submit = this.submit.bind(this);
  }
  async submit(ev) {
    let response = await fetch();
    if (response.ok) {
      this.props.setComplete(true);
       }
  }

  render() {
    if (this.props.complete) return <h1>Purchase Complete</h1>;
    return (
           <Button onClick={this.submit}>
            Send
          </Button>
       );
  }
}

任何帮助将不胜感激,谢谢!

最佳答案

PaymentRequstForm 内部 setComplete 可以通过 this.props.setComplete 访问,而不是 this.setComplete (因为它即将到来)来自FulfillRequest)

  render() {
    if (this.props.complete) return <h1>Purchase Complete</h1>;
     return this.state.canMakePayment ? (
      <PaymentRequestButtonElement />
    ) : (
      <CheckoutForm
        setComplete={this.props.setComplete}
        complete={this.state.complete}
        requestId={this.props.requestId}
      />
    );

关于javascript - Reactjs 将 props 传递给 2 个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123813/

相关文章:

javascript - 函数将 undefined 传递给 Google Apps 脚本中的被调用函数

javascript - 尝试按列实现切换排序。如果我参数化 sortUsers 函数,我会得到 "Maximum call stack size exceeded."

reactjs - Typescript React - 找不到模块 '' React-Materialize 的声明文件。 'path/to/module-name.js' 隐式具有任何类型

javascript - 使用 TypeScript 在 React 组件之外调度 Redux Thunk 操作

javascript - 修复无效 JSON 的最有效方法

javascript - 如何在 Angular 7 中设置一个选择选项的值?

javascript - Chart.js 不需要的 Canvas 大小调整

unit-testing - 使用 Jest 模拟的服务会导致 "The module factory of jest.mock() is not allowed to reference any out-of-scope variables"错误

javascript - react : How to access array in an object?

javascript - 如何在 reduxjs 中设计独立模块?