Как правильно загрузить глобальную переменную с асин c значениями (Reactjs)? - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь решить эту проблему, которую я не могу решить с помощью API Stripe

Так что, создавая плату с помощью их нового API версии, они говорят, что в интерфейсе мы должны вызвать

loadStripe('publishable Key',{'Connected account ID'})

и установите его в const.

Теперь я не понимаю, как нам получить идентификатор, который хранится где-то, скажем, в базе данных?

В качестве ссылки, пожалуйста, посмотрите на это и здесь (на шаге 3 ...).

То, что я сейчас делаю, выглядит примерно так

import React from "react";
import ReactDOM from "react-dom";
import { Elements } from "@stripe/react-stripe-js";
import { loadStripe } from "@stripe/stripe-js";
import CheckoutForm from "./CheckoutForm";

//btw I have set this to const and to let and none work
const stripePromise = fetch("url", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    anything: window.sessionStorage.getItem("Variable Account")
    //here store something that  will tell what account to pull ID data from
  })
})
  .then(data => data.json())
  .then(result => {
    return loadStripe("KEY", { stripeAccount: result });
  });

class App extends React.Component {
  render() {
    return (
      <Elements stripe={stripePromise}>
        <CheckoutForm />
      </Elements>
    );
  }
}

export default App;

но const, кажется, не загружается правильно, если каждый идет с обычным потоком приложения, скажем, из

myapp.com/home  

-> нажмите

myapp.com/home/something  

-> затем

myapp.com/home/something/payment 

нашивка не загружается, но теперь обновляется браузер, но это говорит о том, что я делаю, может быть, что-то не так, или мне нужно сделать приложение refre sh в 'componentDidMount ()', может быть?

Можно установить его как stati c, но подключенных учетных записей может быть много, поэтому, если кто-то может помочь мне с этим, я буду рад буду признателен

1 Ответ

0 голосов
/ 09 марта 2020

Как правило, вы хотите, чтобы этот идентификатор учетной записи был доступен в вашем приложении. Но если вам нужно получить его, это нормально, но убедитесь, что stripePromise - это то, что вы думаете. Например, я могу сделать эту работу здесь с симулированным вызовом выборки здесь: https://codesandbox.io/s/stripe-connect-w-resolve-wts34

Обратите внимание, что я управляю Обещанием явно:

const stripePromise = new Promise((resolve, reject) => {
  fetch(...)
  .then(data => data.json())
  .then(result => {
    resolve(
      loadStripe(STRIPE_PUBKEY, { stripeAccount: "acct_xxx" })
    );
  });
});

Тот факт, что вы описываете этот разрыв с помощью навигации, указывает на то, что вы могли неправильно маршрутизировать. Если это одностраничное приложение, навигация не должна вызывать повторный рендеринг компонента App.

...