• Как залить Webpack+React приложение на github pages?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Вам нужен webpack-dev-server на гитхаб пейджс? Если да, то никак.
    На github вы можете залить "билд" вашего приложения: то есть вашу index.html + картинки + стили (css) + скрипты (ваш бандл и все что еще нужно из js).
    Чтобы получить билд, нужно его собрать. То что в результате сборки будет - это и нужно залить на pages.
    Запущенный сервер (на node.js или еще какой) - не будет работать на pages (или есть примеры?)
    Ответ написан
    2 комментария
  • Как передать значения от ребенка родителю в React?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Нельзя использовать this.state в setState, так как setState асинхронный метод и на момент вызова состояние может успеть измениться. Для обновления состояния по текущему надо передавать в setState функцию возвращающую новый объект состояния. В момент вызова первым аргументом туда придет актуальное состояние компонента:
    this.setState(prevState => ({
      tasks: [
        ...prevState.tasks,
        { content, comments: [], active: true},
      ],
    }));

    2. Хандлеры лучше биндить в конструкторе, либо использовать inline class arrow function вместо метода класса:
    bind в конструкторе:
    constructor(props) {
      super(props);
      this.onAddItem = this.onAddItem.bind(this);
    }

    inline class arrow function:
    onAddItem = content => {
      // some stuff
    };


    3. С формами гораздо удобней работать через контролируемые элементы:
    class Example extends Component {
      state = {
        inputValue: '',
      };
    
      handleChange = e => { 
        const { name, value } = e.target;
        
        this.setState({
          [name]: value,
        });
      };
    
      render() {
        const { inputValue } = this.state;
    
        return (
          <Wrapper>
            <input
              name="inputValue"
              value={inputValue}
              onChange={this.handleChange}
            />
            ...
          </Wrapper>
        );
      }
    Ответ написан
    Комментировать
  • Как передать значения от ребенка родителю в React?

    RomReed
    @RomReed
    JavaScript, Flutter, ReactNative, Redux, Firebase
    Папробуйте так

    Код родителя: 
    class App extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          tasks: [{
            active: true,
            content: "Eat chicken",
            comments: ["comment1", "comment2"]
            }
          ]
        };
      }
    
    needData(data){
       console.log("data",data)
    }
    
      onAddItem(content){
        this.setState({
          tasks: this.state.tasks.concat.push(content: content, comments: [], active: true)
        });
      }
    
      render(){
        return(
          <div className="container-fluid" >
            <div className="row app-row">
              <LogoBar />
              <TasksList tasks = {this.state.tasks} addItem={this.onAddItem.bind(this)}  needData={()=>this.needData}/>
            </div>
          </div>
        )
      }
    }


    Код ребенка: 
    class TasksList extends React.Component {
    
    
      addItem(event){
        event.preventDefault();
        console.log(event.refs.itemInput.value);
        let input = event.refs.itemInput.value;
        this.props.onAddItem(input);
        this.props.needData(input)
      }
    
      render(){
        return(
          <div className="col-sm-5 col-xs-12">
            <h2> Items </h2>
            <form className="form-inline" onSubmit={this.addItem.bind(this)}>
                <input type="text" ref="itemInput" placeholder="Type name here..." className="form-control" />
                <input type="submit" ref='itemSubmit' value="Add new" className="btn btn-info" />
    
            </form  >
    </div>
    Ответ написан
    8 комментариев