Задать вопрос
@nordwind2013

Как вызвать функцию вложенного компонента React?

Я только начинаю изучать React.JS. Проблема в том, что функция моего вложенного компонента не вызывается. Вложил в блок "kpparser"
Вот код компонента моего диалога
class SomeDialog extends React.Component {
    render() {
        return <div id="dialog" className="mdl-dialog mdl-cell mdl-cell--6-col">
                  <h1 className="mdl-dialog__title">Добавить фильм</h1>
                  <div className="mdl-dialog__content">
                         <div className="mdl-layout__content">
                            <div className="mdl-tabs mdl-js-tabs">
                               <div className="mdl-tabs__tab-bar">
                                  <a href="#kpparser" className="mdl-tabs__tab is-active">KPParser</a>
                                  <a href="#manual" className="mdl-tabs__tab">Ручной ввод</a>
                               </div>
                               <div className="mdl-tabs__panel is-active" id="kpparser">
                                  <ParseForm postUrl="/redactortools/parse" />
                               </div>
                               <div className="mdl-tabs__panel" id="manual">
                                  <div id="manual-input"></div>
                               </div>
                            </div>
                         </div>
                  </div>
                  <div class="mdl-dialog__actions">
                    <button type="button" className="mdl-button">Close</button>
                    <button type="button" className="mdl-button" disabled>Disabled action</button>
                  </div>
              </div>
  }
  };

А вот код моего компонента с формой
class ParseForm extends React.Component {
    constructor(props) {
        super(props);
        this.state = { url: ''};
        this.handleUrlChange = this.handleUrlChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
    }
    handleUrlChange(e) {
        this.setState({ url: e.target.value });
    }
    handleSubmit(e) {
        const url = this.state.url.trim();
        this.state ={url:url}
        var data = new FormData();
        data.append('url',url)
        if (!url) {
            return;
        }
        var xhr = new XMLHttpRequest();
        xhr.open('post', this.props.postUrl, true);
        xhr.onload = function (event) {
            var json = xhr.responseText;
        }
        xhr.send(url);
    }
    render() {
        return (
                <div>
                    <form className="commentForm" onSubmit={this.handleSubmit}>   
                        <div className="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
                            <input type="text"
                                   id="url"
                                   className="mdl-textfield__input"
                                   value={this.state.url}
                                   onChange={this.handleUrlChange} />
                            <label className="mdl-textfield__label" for="url">Адресс</label>
                        </div>
                        <input type="submit" className="mdl-button" value="Парсинг" />
                    </form>
                </div>
               );   
             }
}

Прошу помощи. Спасибо.
  • Вопрос задан
  • 283 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. У вас код невалидный. Ключевые слова class и for зарезервированны языком.
Используйте вместо className и htmlFor.
2. this.state ={url:url} Так state обновлять нельзя.
3. Создаете FormDatra но не используете.

После исправления этих пунктов, если не заведется смотрите ошибки в консоли, смотрите вкладку network, можно и сам метод подебажить тем же выводом console.log.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы