Я хочу использовать поисковую рекламу.
Так что, когда компонент монтировал сценарии добавления и размонтирования, удалял их
Но я борюсь с проблемой изменения страницы
Изменение страницы не отображает мои партнерские объявления, но возвращает ошибку (getBoundcingClientRect)
, когда я обновляю sh страницу, тогда я вижу свои объявления.
Я посмотрел этот пост. Амазонский скрипт поиска для аффилированного поиска: Uncaught TypeError: Невозможно прочитать свойство 'getBoundingClientRect' со значением null
, но я не смог использовать postscribe в моем проекте, есть проблема зависимости
вот мой код компонента реакции
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { getLocale } from '../../selectors/session';
function mapStateToProps (state, { concerts }) {
return {
artist: state.artist.artist,
locale: getLocale(state),
};
}
@connect(mapStateToProps)
export default class AffiliateContainer extends Component {
componentDidMount () {
this.appendScript()
}
componentWillUnmount() {
this.removeScript()
}
appendScript(){
const script = document.createElement('script')
script.type = 'text/javascript'
script.src = `//z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US`
script.id = 'amazon-affiliate'
script.async = true
const s = document.createElement('script')
s.type = 'text/javascript'
s.id = 'amazon-affiliate2'
s.async = true
const code = `amzn_assoc_placement = "adunit0"; amzn_assoc_tracking_id = "trackingID"; amzn_assoc_search_bar = "false"; amzn_assoc_ad_mode = "search"; amzn_assoc_ad_type = "smart"; amzn_assoc_marketplace = "amazon"; amzn_assoc_region = "US"; amzn_assoc_default_search_phrase = "kpop, ${this.props.artist?.groups?.length > 0 ? `${this.props.artist.name}, ${this.props.artist.groups[0].name}` : this.props.artist.name}"; amzn_assoc_default_category = "All"; amzn_assoc_linkid = "linkID"; amzn_assoc_title = "Shop Related Products";`
s.appendChild(document.createTextNode(code))
const dom = document.getElementById('amazon-search-container')
const ad = document.getElementsByClassName('amzn-native-container')
if(dom && !ad.length > 0) {
dom.appendChild(s)
dom.appendChild(script)
}
}
removeScript(){
const dom = document.getElementById('amazon-search-container')
const script1 = document.getElementById('amazon-affiliate')
const script2 = document.getElementById('amazon-affiliate2')
if(dom){
dom.removeChild(script1)
dom.removeChild(script2)
}
}
render() {
return (
<div className="contents-wrap">
<div id="amazon-search-container">
<div id="amzn_assoc_ad_div_adunit0_0"/>
</div>
</div>
);
}
}