У меня есть MDL, работающий с React в данный момент, и в данный момент он работает нормально.
У меня есть индикатор выполнения, появляющийся на странице по мере необходимости, и он загружается с указанным «прогрессом» при загрузке страницы при прямом вводе числа:
document.querySelector('#questionnaireProgressBar').addEventListener('mdl-componentupgraded', function() {
this.MaterialProgress.setProgress(10);
})
или при передаче числа через переменную:
document.querySelector('#questionnaireProgressBar').addEventListener('mdl-componentupgraded', function() {
this.MaterialProgress.setProgress(value);
})
Однако после этого он перестает работать. Я пытаюсь обновить значение через переменную, но оно не обновляется. Мне посоветовали использовать это:
document.querySelector('.mdl-js-progress').MaterialProgress.setProgress(45);
чтобы обновить значение, но это не работает. Даже при попытке сделать это прямо в консоли.
При попытке через консоль получаю следующую ошибку:
Uncaught TypeError: document.querySelector(...).MaterialProgress.setProgress is not a function(…)
Когда я пытаюсь увеличить значение с помощью переменной, я не получаю ошибок, и когда я console.log(значение), мне предоставляется правильное число (1,2,3,4...) после каждого события щелчка, которое запускает функцию ( срабатывает при выборе ответа в анкете)
Я хочу знать, есть ли что-то очевидное, чего мне не хватает при использовании MTL и React, чтобы заставить компоненты работать? Была проблема с областью действия, но я, кажется, исправил ее следующим образом:
updateProgressBar: function(value) {
// fixes scope in side function below
var _this = this;
document.querySelector('#questionnaireProgressBar').addEventListener('mdl-componentupgraded', function() {
this.MaterialProgress.setProgress(value);
})
},
В React у меня есть родитель, который передает ребенку данные через реквизит, и я использую «componentWillReceiveProps» для вызова функции, которая обновляет индикатор выполнения.
Я также использовал функцию «componentDidMount», чтобы увидеть, имеет ли это значение, но она по-прежнему работает только при загрузке страницы. Из того, что я прочитал, кажется, что я должен использовать «componentWillReceiveProps» вместо «componentDidMount».
Он подается от родителя из-за того, что компоненты отправляют данные друг другу. Я использовал их документы и некоторую помощь в Интернете, чтобы правильно обновить родительскую функцию, а затем обновить индикатор выполнения в отдельном компоненте.
updateProgressBarTotal: function(questionsAnsweredTotal) {
this.props.updateProgressBarValue(questionsAnsweredTotal);
}
Родительская функция выглядит следующим образом (я думаю, что это может быть виновником):
// this is passed down to the Questions component
updateProgressBarTotal: function(questionsAnsweredTotal) {
this.setState({
progressBarQuestionsAnswered : questionsAnsweredTotal
})
}
Я могу опубликовать еще немного кода, если это необходимо.
Спасибо
MaterialProgress.setprogress
должно бытьMaterialProgress.setProgress
- person hazardous   schedule 18.01.2016child
, а не в родительском элементе, поскольку похоже, что родитель искал несуществующий узел DOM, отсюда и ошибка. - person Kam Banwait   schedule 19.01.2016