Задать вопрос
  • Как обновить компонент в зависимости от состояния localstorage?

    @karminski
    Senior React.JS Developer
    Вам нужно написать слушателя (watcher). Например,
    const interval = setInterval(() => {
       const myitem = window.localStorage.getItem('MYITEM');
       if (myitem) {
           clearInterval(interval);
       }
       // дальнейшие действия с myitem
    }, 1000);
    Ответ написан
    1 комментарий
  • Как проинициализировать склонированный проект с github?

    @res2001
    Developer, ex-admin
    Если история коммитов не нужна: отдельно склонируйте проект с битбакета, создайте нужную ветку (если ее нет), сделайте checkout в ветку, добавьте в проект файлы из вашей первой репы, сделайте коммит.
    Ответ написан
    1 комментарий
  • Как избавиться от начального значение в useState?

    Devilz_1
    @Devilz_1
    Frontend-Developer
    Добавлю к выше написанному комментарию от Вадима.

    Иногда существует надобность в том, что бы проводить какие-либо манипуляции с данными сразу после того, как мы их изменили в функции. Возьмём пример автора:

    import React, { useState } from "react";
    import "./styles.css";
    
    const View = ({ inputValues, onChangeInput }) => {
      return <input type="text" value={inputValues} onChange={onChangeInput} />;
    };
    
    const Logic = () => {
      const [inputValues, setInputValues] = useState("");
    
      const onChangeInput = e => {
        setInputValues(e.target.value);
    
        // *** Здесь мы хотим взять новые данные и что-то с ними сделать (в данный
        // момент мы просто выводим в консоль)
        console.log(inputValues);
      };
    
      return <View inputValues={inputValues} onChangeInput={onChangeInput} />;
    };
    
    export default Logic;


    *** Здесь данные устаревшие, это описал Вадим, и я с ним согласен. Но всё-таки, есть вариант использовать данные сразу после их изменения, и к сожалению в хуках этот вариант выглядит куда менее эстетичнее, нежели в классах.

    Дело в том, что в классах для изменения состояния используется setState (кэп). setState первым параметром принимает изменяемый объект, а вторым (необязательным) параметром он принимает callback, в котором можно получить уже изменившийся state. Ниже приведён пример автора, где функциональная компонента Logic переделана в одноименную классовую компоненту. Тут. При вводе символов в input, в консоли мы будем получать символы по порядку, т.е. будем видеть актуальный state

    Чтобы добиться такого же результата у автора, нужно подписаться на изменение параметра inputValues в хуке useEffect. Тут. Теперь мы так же при вводе символов в input видим актуальные данные.
    Ответ написан
    2 комментария
  • Как избавиться от начального значение в useState?

    MrDecoy
    @MrDecoy
    Верставший фронтендер
    У Вас нет проблемы, которую Вы описали, потому что это работает несколько не так, как Вы, я полагаю, думаете.
    const Logic = () => {
      const [inputValues, setInputValues] = useState('');
      console.log('1)', inputValues);
      const onChangeInput = e => {
        setInputValues((currentState) => {
          console.log('2) current', currentState); 
          return e.target.value});
        console.log('3)', inputValues);
      };
    
      return <View inputValues={inputValues} onChangeInput={onChangeInput} />;
    };
    
    // Будем вводить букву 'a' в инпут. В итоге в консоле получим:
    // 1)"" <-- из-за useState('');
    // 2) current "" <-- так как значение мы ещё не обновили, то получаем то же начальное значение из useState('');
    // 3) "" <-- вызвывается ПОСЛЕ setInputValues, тем не менее, имеет ещё не обновлённое значение.
    // 1) a <-- произошло изменение состояния, компонент перерисовался.


    Дальше, в заивисимости от того, что Вы хотите сделать,
    выводите значение либо в "1)" - это вывод с новым state но перед перерисовкой,
    либо в "3)" Вам нужно выводить e.target.value.

    Операция изменения состояния - асинхронная и реакт может собирать несколько изменений состояния в одно для оптимизации.
    Ответ написан
    Комментировать
  • Как правильно использовать useEffect?

    hzzzzl
    @hzzzzl
    https://dev.to/savagepixie/fetching-data-with-reac...
    https://www.robinwieruch.de/react-hooks-fetch-data

    const [data, setData] = useState({});
    
      useEffect(() => {
        const fetchData = async () => {
          const result = await axios(
            'https://hn.algolia.com/api/v1/search?query=redux',    // await fetch('./db.json') ?
          );
          setData(result.data);
        };
        fetchData();
      }, []);
    Ответ написан
    Комментировать
  • Почему не отображаются props?

    0xD34F
    @0xD34F Куратор тега React
    Что-то вы явно не то делаете, передавать данные следует через value. Несколько значений хотите передать - соберите их в один объект, выдумывать какие-то свои пропы не надо.

    Так что в index.js меняете value={bookStoreService} data={data} на value={{ bookStoreService, data }}, а в with-bookstore-service.js меняете (bookStoreService, data) на ({ bookStoreService, data }).
    Ответ написан
    1 комментарий
  • В чем разница между двумя способами подключения события?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Разница в том, что в первом случае вы можете установить всего один обработчик данного типа на элемент. Если попробуете таким образом "добавить" ещё один обработчик, то он просто перезапишет первый.

    Во втором случае обработчик добавляется (о чём, собственно, и повествует наименование метода) вне зависимости от того есть на элементе обработчик этого же типа события или нет.
    Ответ написан
    2 комментария
  • Как осуществить вывод новостей из группы Вконтакте на свой сайт?

    gobananas
    @gobananas
    finishhim.ru
    1. Создать своё приложение в ВК на странице https://vk.com/editapp?act=create
    2. Авторизоваться в приложении в ВК под аккаунтом у которого есть права просмотра нужно стены
    3. С помощью wall.get как правильно заметил riot26 парсим стену
    4. Ответ разбираем и необходимые поля оборачиваем в свой дизайн кладём в БД или сразу выводим на сайт
    Ответ написан
    Комментировать