• Почему происходит рендер не ожидая ответа от сервера?

    TMProject
    @TMProject
    Frontend developer React/Redux
    У тебя в newsReducer и в newReducer используются одни и те же action.type, у тебя два ведь два разных стейта поэтому и разные должны быть типы экшенов. Например
    export const newsReducer = (state = initialState, action:DataAction): DataState =>{
        switch (action.type){
            case DataActionTypes.FETCH_DATA_NEWS:
                return {loading:true, error:null, data: []};
            case DataActionTypes.FETCH_DATA_NEWS_SUCCESS:
                return {loading:false, error:null, data: action.payload};
            case DataActionTypes.FETCH_DATA_NEWS_ERROR:
                return {loading:false, error:action.payload, data: []};  
    
            default:
                return state
        }
    
    }
    
    export const newReducer = (state = initialStateNew, action:DataActionNew): DataStateNew =>{
        switch (action.type){
            case DataActionTypes.FETCH_DATA_NEW:
                return {loading:true, error:null, data: []};
            case DataActionTypes.FETCH_DATA_NEW_SUCCESS:
                return {loading:false, error:null, data: action.payload};
            case DataActionTypes.FETCH_DATA_NEW_ERROR:
                return {loading:false, error:action.payload, data: []};  
    
            default:
                return state
        }
    
    }

    Далее соответственно эти типы нужно использовать при диспатче
    Ответ написан
  • В чем проблема, при попытке удалить компонент?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Что находится в стейте components? Изначально там пустой массив. Что ты туда заносишь?

    Во-первых,
    onclick должен вызывать функцию с передачей item, в твоём случае передается контекст img.

    Во-вторых,
    removeThisComponent={removeComponent}
    это вообще зачем?
    Зачем передавать в компонент функцию для удаления, если нужно передать item. И этот item дальше использовать в onclick.

    Encountered two children with the same key, `null`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.

    Это говорит о том, что используется не уникальные, в пределах итерации key
    Ответ написан
    3 комментария
  • Можно ли в пропсах указать длину элементов?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Передай в пропсы количество и циклом сгенерируй это нужное количество
    Ответ написан
    Комментировать
  • Как лучше скрыть элемент в react?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Я предпочел бы 2 вариант.
    только единственное, что бы сделал это отдельный хук, который бы возвращал ширину экрана и использовал бы в компоненте. Передача пропсом здесь не нужна.
    Если сравнивать с css вариантом, то тут выгода на лицо, меньше медиа запросов и логика компонента упакована в одном месте. Например компонент делает какие-то вычисления, то смысл их делать если ширина экрана не та, следовательно нужно меньше ресурсов на рендер.
    Ответ написан
    6 комментариев
  • Как отследить клики по модальному окну на React?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Повесить слушатель событий на корневой элемент модальных окон или же на весь документ (смотря какая структура) и при клике проверять был ли этот клик на нужный элемент или нет. Если да то изменять Стейт/контекст/стор
    Ответ написан
    Комментировать
  • Как сделать стейт лайка?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Во первых, тебе нужен Стейт не булевный, а массив.
    При клике на лайк заноси или убирай из массива индекс айтема.
    Во вторых, при итерации массива айтемов проверяй есть ли в стейте нужный индекс. Это и будет условие для смены картинки.
    В третьих, при условии не обязательно менять элемент, достаточно изменять путь к картинке.
    Ответ написан
    Комментировать
  • В чем ошибка у wp_insert_post?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Так а что не понятно,
    Call to undefined function wp_insert_post()
    Не знает что это за функция.
    --
    Что нужно сделать:
    Локализуем параметры, подключаем скрипты
    wp_localize_script('тут handle js', 'ajax', array(
    		 'url'              => admin_url('admin-ajax.php'),
    		 'nonce'            => wp_create_nonce('ajax-custom-request'),
    	  ));


    в файле function.php регистрируем обработчик для ajax
    //ajax_init
       add_action('init', 'auth_ajax_init');
       function auth_ajax_init(){
              //для не авторизированных
    	  add_action('wp_ajax_nopriv_custom_request, 'custom_request_callback');
              //для авторизированных
    	  add_action('wp_ajax_custom_request', 'custom_request_callback');
    }


    далее сам обработчик (можно там же в файле function.php):
    function custom_request_callback(){
              //Проверяем Ajax запрос на соответствие nonce коду, если не соответствует выходим
    	  check_ajax_referer('ajax-custom-request', 'nonce_code');
    	  
              //Если проверку прошли
      
              //Здесь обрабатываем запрос, здесь доступна $_POST
    
    	  wp_die();
       }


    в js скрипте:
    let data = {
     action: 'ajax-custom-request',
     nonce_code: ajax.nonce,
     data: здесь сериализуем данные для передачи,
    };
    $.post(ajax.url, data, function(data, textStatus) {
     // здесь обработать ответ data
    }, 'json');


    https://wp-kama.ru/id_2018/ajax-v-wordpress.html
    Ответ написан
    1 комментарий
  • Как сохранить DomDocument в файл html в UTF-8?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Загружаешь контент
    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->formatOutput = true;
    $content = file_get_contents($file);
    $content = mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8');
    $dom->loadHTML($content);


    Далее выпоняешь нужные действия с $dom
    Потом сохраняешь
    $dom->encoding = 'UTF-8';
    $html = $dom->saveHTML();
    file_put_contents($file, $html);
    Ответ написан
    1 комментарий
  • Как исправить ошибку: Warning: Invalid argument supplied for foreach() in /var/www/.../data/www/mysite/wp-includes/blocks.php on line 253?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Это баг движка WP проявляется начиная с версии PHP 7.2,
    Понизь версию до 7.1 и должно работать
    Ответ написан
    1 комментарий