使用React条纹元素时,如何向我的卡元素添加自定义字体?

时间:2018-03-12 16:10:40

标签: reactjs stripe-payments react-stripe-elements

我正在使用react-stripe-elements,但自述文件没有解释如何添加自定义字体。

我有一个容器:

  <StripeProvider apiKey={stripePubkey}>
    <Elements>
      <Checkout {...this.props} />
    </Elements>
  </StripeProvider>

然后在我的Checkout中,我有一个包装信用卡输入:

<form id="payment-form" onSubmit={this.onSubmit}>
   <CreditCardInput />
</form>

然后我的包装信用卡输入是:

  <label>
    Card info
    <CardElement onChange={this.onCardChange} style={style} />
    <div id="card-errors" role="alert">{this.state.error.message}</div>
  </label>

传递到<CardElement />的样式:

const style = {
  base: {
    color: '#232e35',
    fontFamily: '"Podkova", "Courier New", serif',
    fontSize: '16px',
    '::placeholder': {
      color: '#9ab4b0'
    }
  },
  invalid: {
    color: '#cf3100',
    iconColor: '#cf3100'
  }
};

2 个答案:

答案 0 :(得分:3)

事实证明,Stripe API中的stripe.elements([options])映射到react-stripe-elements中的<Elements />组件。因此,您将cssSrc添加到fonts选项/属性,如下所示:

  render() {
    const fonts = [{ cssSrc: "https://fonts.googleapis.com/css?family=Podkova:400" }]

    return (
      <StripeProvider apiKey={stripePubkey}>
        <Elements fonts={fonts}>
          <Checkout {...this.props} />
        </Elements>
      </StripeProvider>
    )
  }

答案 1 :(得分:1)

我必须对Sja's answer进行修改才能使其适用于我的情况。 (我使用loadStripe而不是StripeProvider btw。)

const options = {
  fonts: [
    {
      src: require("path-to-font"),
      family: "Fontname",
    },
  ],
}

<Elements stripe={loadStripe(stripe_public_key)} options={options}>

此问题也已在此处解决:https://github.com/stripe/react-stripe-elements/issues/285