将 GooglePay 与 React 集成
Integrating GooglePay with React
所以我的任务是将 GooglePay 集成到我们的 React 应用中...
文档中建议的一般方法:
const button = this.paymentsClient.createButton({
onClick: () => console.log('TODO: click handler')
});
document
.getElementsByClassName('my-payment-class')[0]
.appendChild(button);
工作完美,但这不是一个非常 'react' 的做事方式...
按钮 returns 这个:
所以我的想法是使用以下方式渲染它:
return <div dangerouslySetInnerHTML={{ __html: button }} />;
但是这呈现为:
当我尝试在 jsx 中渲染它时
return <div > {button} </div>;
它抛出 Objects are not valid as a React child (found: [object HTMLDivElement])。
有人可以分享可行的实现吗?
API returns 一个 DOM 元素,而不是 React 元素。这就是 React 无法渲染它的原因
正如您所指出的,您可以在 React 元素上使用 appendChild
,或者在其 JSX 表示中使用 dangerouslySetInnerHTML
属性。请注意,当您采用后一种方法时,React 元素需要 DOM 元素的原始 HTML,而不是对象本身。您可以使用 innerHTML
属性 访问 DOM 的原始 HTML 内容,如下所示:
return <div dangerouslySetInnerHTML={{ __html: button.innerHTML }} />;
所以我的任务是将 GooglePay 集成到我们的 React 应用中...
文档中建议的一般方法:
const button = this.paymentsClient.createButton({
onClick: () => console.log('TODO: click handler')
});
document
.getElementsByClassName('my-payment-class')[0]
.appendChild(button);
工作完美,但这不是一个非常 'react' 的做事方式...
按钮 returns 这个:
所以我的想法是使用以下方式渲染它:
return <div dangerouslySetInnerHTML={{ __html: button }} />;
但是这呈现为:
当我尝试在 jsx 中渲染它时
return <div > {button} </div>;
它抛出 Objects are not valid as a React child (found: [object HTMLDivElement])。
有人可以分享可行的实现吗?
API returns 一个 DOM 元素,而不是 React 元素。这就是 React 无法渲染它的原因
正如您所指出的,您可以在 React 元素上使用 appendChild
,或者在其 JSX 表示中使用 dangerouslySetInnerHTML
属性。请注意,当您采用后一种方法时,React 元素需要 DOM 元素的原始 HTML,而不是对象本身。您可以使用 innerHTML
属性 访问 DOM 的原始 HTML 内容,如下所示:
return <div dangerouslySetInnerHTML={{ __html: button.innerHTML }} />;