Ответы пользователя по тегу React
  • Лучшая библиотека для asynchronous data fetching?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Использую isomorphic-fetch
    Ответ написан
    Комментировать
  • Как правильно вывести данные из JSON в React-router/Redux, на новой стр., соответствующие текущему id?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    showInfoPage(e) {
      const id = e.currentTarget.id
      // далее нужно вызвать сам переход
      // я делаю это через push из react-router-redux ( import { push } from 'react-router-redux' )
      // можно прокинуть через dispatch
      dispatch(push('/information/'+id))
    
      //конечно, у вас dispatch скорее всего будет прокинут из props, поэтому финальный вариант
      this.props.dispatch(push('/information/'+id))  
    }
    
    <tr onClick={showInfoPage} id={infos.id}>
         <td key={infos.id}>{infos.id}</td>
         <td key={infos.about}>{infos.about}</td>
    </tr>


    p.s. вместо id, можете использовать data-* атрибуты, и доставать их через e.currentTarget.dataset.*
    Ответ написан
    4 комментария
  • Почему обновляется родительский элемент react+redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    ...
    let AppSmallRedux = connect(
        (store) => ({ data: store.reducerAppSmall }), // (1)
        dispatch => ({
            update: () => dispatch({ type: "UPDATE_AppSmall" })
        })
    )(AppSmall);
    ...
    let AppRedux = connect(
        (store) => ({ data: store.reducerApp }), // (2)
        dispatch => ({
            update: () => dispatch({ type: "UPDATE_App" })
        })
    )(App);
    ...


    В пунктах (1) и (2) вы подписывались на весь STORE, следовательно, если он менялся, то у вас на это реагировали все "приконекченные" компоненты. Если подписываться только на "нужный кусочек стора" - то все будет ок.

    Ваш обновленный пример (codepen).
    Ответ написан
    Комментировать
  • У кого был опыт интеграции ReactJS приложений в Wordpress?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Можете подсказать, как правильно связать вместе эти вещи.

    Так же, как и без wordpress'a.
    Wordpress не накладывает никаких ограничений. Подключаете на нужной странице скрипт, создаете элемент с id таким-то, в него монтируете реакт-приложение.
    Ответ написан
    Комментировать
  • Удаление элемента?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    class App extends React.Component {
      constructor(){
        super();
        this.state ={
          count: [1,2,3,4,5,6,7,8,9]
        }
      }
      removeCount(idx){ // <= здесь было idk (опечатка)
        let newItems = this.state.count;
        newItems.splice(idx, 1);
        this.setState({count: newItems});
      }
      render() {
        const self = this
        const list = this.state.count.map(function(index, i){
          // здесь у вас был не тот this, так как вы используете обычную функцию, а не стрелочную, "this равный компоненту" теряется, чтобы разобраться можете тут сконослить this и self
          return <div key={i} onClick={self.removeCount.bind(self, i)}><p>{index}</p></div>
        })
        return (
          <div className="row">
           {list}
          </div>
        );
      }
    }
    
    ReactDOM.render(<App />, document.getElementById('container'));
    Ответ написан
    2 комментария
  • React. Полезные библиотеки на подобие Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Для работы с датами: moment
    Для роутинга: react-router
    Для крутых таблиц, а так же представления большого количества данных: react-virtualized
    Для работы с material ui: material-ui
    Модалные окна: react-modal
    Удобный дейтпикер: react-bootstrap-datarangepicker
    Для google analytics: react-ga
    ---
    Для разработки:
    pre-commit - запускать проверки перед коммитом,
    eslint - поддерживать единый стиль кода на проекте,
    webpack + babel (само собой),
    cross-env - забыть про проблемы NODE_PATH под разные операционки,
    Ответ написан
    7 комментариев
  • Как эмулировать нажатие на react элементы?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Если вы на чужом сайте пытаетесь выполнить $ что-то там, то нужно чтобы $ был равен функции jQuery, ведь по сути, $ - это просто имя функции.
    Поэтому, для начала, введите в консоли $, должно быть что-то подобное:
    6a61a3674506467ea8ca7eb92a01b4fe.jpg
    А не так:
    dff7fdbc6f6a49f3bc13ebcf6258f990.jpg

    Окей, допустим jquery подключен и доступен через $, значит далее проверяйте, что доступен этот элемент:
    $(".dealbtn-up")
    Если доступен и он всего один(!), то едем далее, и проверяем доступна ли функция click (это уже из области фантастики, так как она 100% должна быть доступна, но мало ли что написано другим программистом, главное в этом ответе, для вас - понять последовательность действий).
    Выглядит примерно так.

    Если же, таких ссылок много, то нужно обращаться к элементу по индексу, например:
    $(".dealbtn-up")[0].click()
    Ответ написан
    2 комментария
  • Как в приложении react+redux реализовать отправку картинки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Почему не можете? Это же тоже обычное поле формы.
    Посмотрел старый проект, где это делал. Было так:
    ...
    const request = require('superagent-bluebird-promise')
    ...
    export function addProduct(formData) {
      return dispatch => {
        dispatch({ type: PRODUCT_ADD_REQUEST })
        if (formData.image) {
          return request.post(`${API_ROOT_V1}/api/v1/products/add`)
            .field('name', formData.name)
            .field('price', formData.price)
            .field('description', formData.description)
            .field('providerId', formData.providerId)
            .attach('image', formData.image, formData.image.name) // добавление картинки
            .then(...) // здесь дальнейшая обработка в случае успеха
        } else { // кейс, когда у товара нет картинки
          return request.post(`${API_ROOT_V1}/api/v1/products/add`)
            .send(formData)
            .then(...)
        }
      }
    }


    В коде компонента formData формирую так:
    ... 
    // (обработчик сабмита формы)
    this.props.addProduct({
          name,
          price,
          description,
          image: findDOMNode(this.refs.image).files[0], // (забираю картинку)
          providerId: this.props.providerId,
        })
    ...
    
    // непосредственно кнопка загрузки файла в форме
    <div className='form-group'>
              <input
                id='productImage'
                type='file'
                name='image'
                placeholder='Image'
                onChange={this.handleChange}
                value={this.state.image}
                data-field-name='image'
                ref='image' />
              <p>Load product image</p>
            </div>
    ...
    Ответ написан
    2 комментария
  • Как правильно обработать Promise redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Судя по коду, вы решили ввязать еще и в это дело redux, значит надо дополнить ваш пример редьюсером и считать данные из него.
    офф.документация
    туториал на ру (устарело, но сама суть не изменилась)
    Ответ написан
    Комментировать
  • Как правильно экспортировать модули?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Судя по всему, надо подключения babel перенести на первое место, затем остальные скрипты.
    Ответ написан
    Комментировать
  • Как сделать ссылку на определённую статью в react?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    (вариант с использованием react-router)
    Делаете роут с параметром, например:
    <Route path='/articles/:id' component={Article}>, где параметром является имя_переменной после двоеточия, в данном пример - id

    В компоненте Article, имеете доступ к ID через this.props.params.id

    Далее как угодно, например в componentDidMount делать запрос за этой статьей и показывать ее..
    Ответ написан
    Комментировать
  • Как получить promise при обработке onClick события?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Предположим, что с subFunction все ок.

    Но далее то что должно происходить? Компонент у вас примонтирован (componentDidMount случился), на изменение props он у вас никак не реагирует (не вижу в коде componentWillReceiveProps), так же не вижу, чтобы что-то передавалось в родителя. Вывод: вы вызываете subFunction, она делает свою работу и все на этом.
    Ответ написан
  • Можно ли как-то перезапустить полностью React js SPA?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    location.reload() ?
    Ответ написан
    3 комментария
  • Как правильно использовать state в React в связке с Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Через state и делайте. То, что не нужно никаким другим вашим компонентам (которые, вдобавок, не являются потомками) отлично уживается в state.
    Ответ написан
    Комментировать
  • Новые возможности javascript являются частью спецификации языка?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    что jsx-скрипт распарсивается какой-то библиотекой написаной на стандартном javascript и транслирует в него же...

    Абсолютно верно. JSX превращается в обычные js-объекты.

    На счет любых атрибутов - сказать точно не могу (angular / vue тоже же используют кастомные атрибуты, но я не знаком с тем, как обрабатываются шаблоны подобные), знаю лишь, что data-* валидны в HTML 5, а если вы про "атрибуты в jsx", то там да... любые, но это уже и не HTML.
    Ответ написан
    Комментировать
  • Webpack 2. Как уменьшить сборку React?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Так же можете использовать code splitting (https://toster.ru/answer?answer_id=1010668)
    Ответ написан
    Комментировать
  • Переписать часть сайта на react/redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    React для этого прекрасно подходит. Заменить какую-то "страницу" из всего сайта - самое то.

    Конечно, для этого, нужно будет, чтобы на сервере было REST API (если уже - то писать "отдельный" сервер не нужно, а если нет - то все равно не нужно, но придется писать "отдельный" кусок, в котором будет реализовано это API).

    На react native скорее всего тоже сможете использовать, но я бы сразу так "радужно" не настраивался, ибо с кодом придется повозиться, в любом случае, то что будет написано на бэкэнде уже пригодится для мобильного приложения на любом инструменте.
    Ответ написан
    4 комментария
  • Откуда идёт зависимость от user?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    У вас порядок передачи пропсов в компонентах выглядит так: Comment -> UserInfo -> Avatar

    Comment передает в свойстве user объект:
    {
           "url": "/",
          "name": "Nikulio"
    }


    Следовательно, этот объект теперь доступен в UserInfo через props.user. В Avatar так же передается в качестве свойства user этот же объект.

    Следовательно, у Avatar в props будет объект:
    {
        user: {
            url...
            name....
        }
    }

    Следовательно, в Avatar к значениям этих свойств можно обратиться: props.user.url , props.user.name
    Ответ написан
    2 комментария
  • Пример архитектуры большого сайта-SPA?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Не совсем по теме..

    Супер "полноценных" нет, но где-то тут же на тостере уже всплывала подобная тема. Из давнего (уже) помню soundcloud клиент - статья, github.

    Выложить в open-source рабочее бизнес-приложение - практически невозможно.
    Выложить какую-то его часть, которая сделана хорошо - уже реальнее, по такому типу можно смотреть на хорошие библиотеки (типа react-virtualized). Но опять же, там "архитектуры" по вашему вопросу нет.
    Выложить в общий доступ хороший "учебный" проект - самое реальное. Поэтому может найдется где хорошее платное учебное приложение? А может и бесплатное...

    p.s. все же упирается в деньги/время. Если даже бизнес скажет - "выкладывай куда хочешь", то выложите ли вы свою поделку? Вряд ли, так как написано оно было в стиле "пожалуйста, выкати фичу побыстрее, если потом будет время - порефакторишь". Поэтому просто предлагаю писать по мере своих возможностей, а учиться продолжать там же где и раньше, так как полноценное крепкое приложение в опен-сорсе, это почти миф.
    Ответ написан
    Комментировать
  • Relay замена Redux для React?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Facebook придумали Flux подход до Redux.
    А потом еще и Relay. Не знаю, смотрели ли они в это время на Redux или нет.
    Ответ написан
    Комментировать