Wordpress Woocommerce React - нужна помощь
2 000 руб. за проект
Добрый день!
Делаю плагин для автозаполнение адреса в Woocommerce.
В обычной корзине всё прекрасно работает, а вот в новой корзине, которая на React - не работает.
Суть проблемы:
Устанавливаю значение input (поле адреса) с помощью JS, совершаю клик по другому полю, компонент React рендерится и устанавливается старое значение.
После ввода адреса рендеринг компонента срабатывает раньше, чем установка моего значения адреса. Поэтому он всегда хранит старый адрес.
Подробнее в видео: https://disk.yandex.ru/i/joTDhEuQK8ZzQw
Метод с установкой значения адреса:
function setInputValue(input, value, fromSetInput) {
// Установить значение напрямую
var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
nativeInputValueSetter.call(input[0], value);
// Обновить атрибут value
input.attr('value', value);
//И так пробую стрегирить
input.val(value).trigger('change');
// И так
var inputEvent = new Event('input', { bubbles: true });
inputEvent.fromSetInput = fromSetInput || false;
input[0].dispatchEvent(inputEvent);
// И так
var changeEvent = new Event('change', { bubbles: true });
changeEvent.fromSetInput = fromSetInput || false;
input[0].dispatchEvent(changeEvent);
}
Делаю плагин для автозаполнение адреса в Woocommerce.
В обычной корзине всё прекрасно работает, а вот в новой корзине, которая на React - не работает.
Суть проблемы:
Устанавливаю значение input (поле адреса) с помощью JS, совершаю клик по другому полю, компонент React рендерится и устанавливается старое значение.
После ввода адреса рендеринг компонента срабатывает раньше, чем установка моего значения адреса. Поэтому он всегда хранит старый адрес.
Подробнее в видео: https://disk.yandex.ru/i/joTDhEuQK8ZzQw
Метод с установкой значения адреса:
function setInputValue(input, value, fromSetInput) {
// Установить значение напрямую
var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
nativeInputValueSetter.call(input[0], value);
// Обновить атрибут value
input.attr('value', value);
//И так пробую стрегирить
input.val(value).trigger('change');
// И так
var inputEvent = new Event('input', { bubbles: true });
inputEvent.fromSetInput = fromSetInput || false;
input[0].dispatchEvent(inputEvent);
// И так
var changeEvent = new Event('change', { bubbles: true });
changeEvent.fromSetInput = fromSetInput || false;
input[0].dispatchEvent(changeEvent);
}
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Вежливый профессионал! Решил как по мне не посильную задачу в режиме реального времени. Минут за 10 изучил работу моего кода лучше чем я за несколько недель.
Сенсей короче! Спасибо тебе большое! Удачи!