Я недавно перенес сайт в Gatsby [v2] и обнаружил, что пользовательский HTML-код для Snipcart умножается после того, как происходит событие. Как можно предотвратить умножение пользовательского HTML-кода Snipcart при каждом переходе по странице или при возникновении события?Многократный рендеринг виден, когда я открываю модальный.Я не уверен, является ли это проблемой жизненного цикла компонента React или проблемой компонента Gatsby [v2].
Компонент CustomSnipcartText использует componentDidMount для вызова API Snipcart и использования этих методов для привязки текста к DOM,Компонент CustomSnipcartText импортируется в компонент макета Gatsby.Я попытался импортировать компонент туда, где открывается модальная функция без изменений в результатах.
Пользовательский HTML-компонент Snipcart:
// Binds the Snipcart subscription services to the component
componentDidMount() {
/* global Snipcart:false */
Snipcart.execute('bind', 'cart.opened', function() {
Snipcart.execute('unbind', 'cart.opened')
/* global $: false */
let html = $('#cart-content-text').html()
$(html).insertBefore($('#snipcart-footer'))
})
} ....
Компонент макета GatsbyJs:
export default class Layout extends Component {
render() {
return (
<div className="wrapper">
<CustomSnipcartText /> ...
Я ожидаю, что CustomSnipcartComponent не должен умножаться после любого события.