• Как правильно сделать в React проверку данных?

    @Paul14 Автор вопроса
    Kentavr16, Блин, в том то и дело что трудно подобрать упрощенный пример, который в полной мере передаст проблему. Да, код отрабатывает, все верно. useEffect это выход.

    Я переписал код, который больше отражает проблему.
    https://codesandbox.io/s/determined-shirley-wcek08...

    У меня есть некоторая функция testing проверки в которую я не хочу передавать ни какие аргументы. Я хочу брать их из стороннего стейта (string). И вот получается, что возникает задержка в выполнении, потому что в функции clickToBtn мы обращаемся к функции testing, в которой проверяем стейт string, который не успел "замениться", потому что б**** он должен меняться в одной функции с testing() :

    const clickToBtn = (e) => {
        setString(e.target.textContent);
        testing();
      };


    Я уже много чего перепробывал. Должен быть способ проще и лаконичнее, чтобы все работало и не городить костыли.

    const [count, setCount] = useState(0);
      const [string, setString] = useState("");
      const srollContainer = useRef(null);
      const flag = useRef(false);
    
      const scroll = (n) =>   srollContainer.current.scrollTo({ top: n * 100, behavior: "smooth" });
    
      const clickToBtn = (e) => {
        setString(e.target.textContent);
        testing();
      };
    
      const testing = () => {
        if (string === "go to 3 slide") {
          setCount(3);
          return false;
        }
        setCount(count + 1);
      };
    
      useEffect(() => {
        if (!flag) return false;
        scroll(count);
      });
  • Как правильно сделать в React проверку данных?

    @Paul14 Автор вопроса
    Спасибо, есть ли способ сделать useEffect только при клике на кнопку, чтобы он не отрабатывал сразу. Я нашел решение только через флаг, который объявляется как useRef(false), а при клике на кнопку ставится значение в true.

    useEffect(()=>{
           if(!flag.current) return;
           ...
        },[parameter])
  • Как получить данные о звонках из 3сx (API)?

    @Paul14 Автор вопроса
    Teleweb developer, В офисе у каждого менеджера установлена программа 3cx на телефон, звонок осуществляется из самой программы. Когда клиент звонит на номер компании, звонок поступает на симку, а по SIP протоколу непосредственно в прогу (ну типо звонков в вайбере чтоли). В проге там хранится записи звонков, входящие звонки и каналы ( если телефонов у компании много, для сквозной аналитики ).
  • Как получить данные о звонках из 3сx (API)?

    @Paul14 Автор вопроса
    Teleweb developer, 3CX Phone — софтфон для осуществления звонков по технологии VoIP. Является расширением для системы IP-PBX 3CX. Существуют версии для ОС Microsoft Windows, Android, iPhone, Mac.
  • Почему запрос к mysql внутри цикла while выполняется очень долго?

    @Paul14 Автор вопроса
    nokimaro, спасибо! Только момент еще: у меня в таблице clients есть поле id. И в таблице offers есть поле id. Как их отделить друг от друга? Или можно как-то их заменить на другое значение, например cliend__id и offer__id?
  • Почему запрос к mysql внутри цикла while выполняется очень долго?

    @Paul14 Автор вопроса
    Борис Алексеев, я думаю, что всегда необходимо получать со стороны сервера уже готовый под задачу структурированный ответ JSON, а на стороне клиента выполнять минимальные действия по его видоизменению. Проблем на клиенте (Реакт приложении) в плане загрузки оперативы я не заметил, даже на маломощных компьютерах, да и база пока маленькая на самом деле.
  • Почему запрос к mysql внутри цикла while выполняется очень долго?

    @Paul14 Автор вопроса
    AUser0, можно пример. Для меня это не очевидно, что очень просто. Я не нашел ничего, чтобы сделать так как вы говорите в один джоин. Единственное что приходит на ум, так это сделать запрос к таблице clients, получить данные.
    Потом сделать LEFT JOIN запрос где все offers.clientID = clients.id.
    То есть получить все поля таблицы offers где будет добавлена колонка id (из clients)

    И уже потом в цикле по clients у каждого клиента выдергивать айдишник и искать его среди всех офферов, и формировать нужный ответ.

    Вы про это говорите? Или типо можно сделать все одним запросом?
  • Почему запрос к mysql внутри цикла while выполняется очень долго?

    @Paul14 Автор вопроса
    SELECT * FROM offers AS a
      LEFT JOIN clients AS b
        ON a.clientID = b.id
       	LIMIT 10


    Я получаю объединенную строку данных клиента и данных оффера, а я хочу прийти к такой структуре
    array(	
            "client" => {...} ,	
            "offers" => array({...},{...})
            )
  • Как отобразить контент над кнопками и под кнопками?

    @Paul14
    glasswalk,
    Втыкайте сколько хотите и куда хотите код с классом show_content и атрибутом target_attr равным порядковому номеру кнопки
    <div class='show_content'  target_attr='1'>Показать контент для 2 блока </div>