1111 Сегодня я оказался в том же положении. После борьбы с вилами того же пакета react-pinterest
npm я нашел решение в этой проблеме https://github.com/pinterest/widgets/issues/13 .
Похоже, вы уже приблизились, добавив атрибут данных data-pin-build="doBuild"
, но не вызываете doBuild()
, когда пользователь возвращается к компоненту после перехода по другому маршруту. Добавление атрибута данных указывает pinit.js
добавить doBuild()
в глобальную область, но не вызывает автоматически функцию при перемонтировании компонента.
Попробуйте заменить функцию componentWillMount
на что-то вроде этого:
componentDidMount() {
if (!window.doBuild) {
this.preloadWidgetScript();
} else {
window.doBuild();
}
}
preloadWidgetScript = () => {
const script = document.createElement('script');
script.async = true;
script.dataset.pinBuild = 'doBuild';
script.src = '//assets.pinterest.com/js/pinit.js';
document.body.appendChild(script);
}
Еще одна вещь, на которую следует обратить внимание - это изменение с componentWillMount
на componentDidMount
, это необходимо, чтобы убедиться, что ссылка для встраивания перед выполнением doBuild()
.
В IIS, когда Вы создаете приложение для виртуального каталога, нажимают на "Configuration" для приложения и редактирование "Отображения приложения", т.е. добавляют новое отображение для HTML.
Или, в Вашем web.config, в добавляют, что это разделяет:
<httpHandlers>
<remove verb="*" path="*.html" />
<add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>
<compilation>
<buildProviders>
<buildProvider
extension=".html"
type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
Править: Добавленный раздел, согласно комментарию. Спасибо Chris.
Обратите внимание, что я не на 100% уверен, что это будет работать с расширением PHP, мы используем эту процедуру пользовательского расширения здесь.
Можно изменить конфигурацию IIS: Откройте IIS Console (щелкните правой кнопкой по My Computer> Manage...> Сервисы и приложения),
Нажмите "Configuration Button", ищите .aspx расширение и используйте ту же конфигурацию для ".php" расширения (подсказка: можно скопировать, вставляют исполняемый файл dll имя между обоими диалоговыми окнами),
Некоторое время назад мы переместили веб-приложение от coldfusion до PHP и должны были сохранить старые URL. Путем мы сделали это должно было использовать mod_rewrite для перезаписи .cfm URL к .php. Возможно, можно ли сделать что-то подобное?