GetDefaultProps и getInitialState не работают должным образом

Я новичок в reactjs. Я пробовал некоторые из примеров. Ниже приводится программа, над которой я работаю, но getDefaultProps и getInitialState не работают должным образом.

getDefaultProps не возвращает имя по умолчанию, если я не указал никаких свойств имени для компонента Greeter. Когда я указываю getInitialState, моя форма не отображается.

var Greeter = React.createClass({
  getDefaultProps: function() {
    console.info(this.props);
    return 
    {
      name: "React";
    }
  },
  getInitialState: function() {
    return 
    {
      name: this.props.name;
    }
  },
  onButtonClick: function(e) {
    e.preventDefault();

    var name = this.refs.name.value;
    this.setState({
      name: name
    });

    //alert(name);
  },
  render: function() {
    var name = this.state.name;
    return (
      <div>
        <h1>Hi {name}</h1>
        <p>This is from the react component</p>

        <form onSubmit = {this.onButtonClick}>
          <input type = "text" ref = "name" />
          <button>Set Name</button>
        </form>
      </div>
    );
  }
});

var name = "Lmntrix";

ReactDOM.render(<Greeter name = {name} />, document.getElementById("app"));
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
0
124
1

Ответы 1

Вы вернули свои объекты в новой строке, что, я думаю, заставило javascript вернуть undefined:

getDefaultProps: function ()
{
    console.info(this.props);
    return
    {
        name:"React"
    };
},
getInitialState: function()
{
    return
    {
        name: this.props.name;
    }
},

Когда я скопировал этот код в красивее, он автоматически добавил точки с запятой, что подтверждает мою точку зрения:

  getDefaultProps: function() {
    console.info(this.props);
    return;
    {
      name: "React";
    }
  },
  getInitialState: function() {
    return;
    {
      name: this.props.name;
    }
  },

Итак, чтобы исправить эту попытку:

  getDefaultProps: function() {
    console.info(this.props);
    return {
      name: "React";
    }
  },
  getInitialState: function() {
    return {
      name: this.props.name;
    }
  },

Я не думаю, что интервал должен иметь значение для вывода. Но поскольку вы были так уверены в этом, я тоже пробовал, но у меня это не сработало.

Akshvir Soni 01.05.2018 17:30

@AkshvirSoni, который может не решить эту проблему, но это, безусловно, проблема. См. repl.it/repls/TenderYouthfulCopyleft

Tomasz Mularczyk 01.05.2018 17:54

Спасибо, @Tomasz, понял. но я не думаю, что это касается моего кода, поскольку исправление этого тоже не дает мне желаемого результата.

Akshvir Soni 01.05.2018 18:07

Другие вопросы по теме