• Почему не работает transition свойство?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Переключение display не даст возможность применять transition. Используйте, например, opacity.

    Если хотите плавное изменение свойств при наведении (или другом состоянии) — не цепляйте transition к этому состоянию (например, к :hover в вашем случае), потому что как только состояние пропадёт (увели курсор с элемента), то произойдёт резкая смена значений.

    Однако, если вам нужно плавное появление и резкое исчезновение, то вешать нужно как раз на :hover (или другое выбранное для появления состояние).
    Ответ написан
    Комментировать
  • Аккордеон на чистом JS?

    @xonar
    А смысл?
    Вот правильный код. Вы не указали Classlist, и зачем использовать add и remove, если в данном случае правильно использовать toggle?

    Демо - https://codepen.io/ruslan-lysenko/pen/QWLMvya

    const accordeonTwo = () => {
    
      const accordeonTwoParent = document.querySelector('#accordion-two'),
    accordeonPanelHeading = accordeonTwoParent.querySelectorAll('.panel-heading'),
    accordeonPanelContent = document.querySelector('.collapse');
    
            accordeonPanelHeading.forEach((elem) => {
                elem.addEventListener('click', (event) => {
                    event.preventDefault();
                    let target = event.target;
                    
                    if (target.closest('.panel-heading')) {
                        accordeonPanelContent.classList.toggle('in');
                    }
                });
            });
      };
    
      accordeonTwo();
    Ответ написан
    Комментировать
  • Почему не обновляется компонент после принятия props из redux?

    FreeMan94
    @FreeMan94
    Frontend developer
    У вас должен срабатывать useEffect при изменении пропсов, то есть, нужно указать в массиве props
    useEffect(()=>{
       ...
    },[props])

    Поставьте плагин eslint-plugin-react-hooks он помогает отлавливать такие недочёты.
    Ответ написан
    1 комментарий
  • Как 'оптимизировать' работу fetch с redux?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Добавьте в редьюсер состояние загрузки и ошибки:
    initialState = {
      isFetching: false,
      data: null,
      error: null,
    };


    В компоненте:
    const Example = ({ isFetching, error, data }) => {
      if (isFetching) return <Preloader />;
      if (error) return <Error error={error} />;
      if (!data) return null; // или что хотите показывать при отсутствии данных
      
      // далее обращения к ключам data и JSX.
    }


    Локальное состояние загрузки использовать не надо.
    Метод onGetWeather(path) переделайте в getWeather(lat, long)
    Ответ написан
    1 комментарий
  • Не грузит Windows после удара, что делать?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Сегодня произошла неприятная ситуация, ноутбук упал.

    Если у вас в ноутбуке стоит "классический" механический жёсткий диск (HDD, не SSD) и вам нужна информация с него, то срочно прекращайте любые попытки включить как компьютер, так и диск в отдельности!

    После падения некоторое время все было хорошо, ноут все еще работал, но с видными тормозами

    С учётом того, что ноутбук упал работающим, вам уже сильно повезло, что диск не начал сразу же издавать щёлкающие звуки и/или скрежет (но также не исключено, что вы их не слышите).
    Судя по симптомам, явно имеет место быть повреждение поверхности (скорее всего головки тоже затронуты), и с каждой попыткой запустить диск ситуация ухудшается.

    Уже сейчас очень высока вероятность того, что для восстановления данных потребуется замена блока головок, дальнейшими же включениями диска вы можете довести диск до состояния, когда такая замена потребуется не одна (соответственно, высокая цена работ), либо окончательно запилить диск и сделать восстановление информации невозможным вообще.

    Так что вам нужно либо менять диск на новый, либо обращаться в специализированную компанию, занимающуюся только восстановлением данных и ничем больше.
    "Ремонты ноутбуков", эникейщики и "программисты" не смогут помочь с жёстким диском, имеющим физические повреждения, только сделают хуже, если сами не передадут заказ специалистам.

    На всякий случай, вот краткая памятка:
    Ответ написан
    7 комментариев
  • Грамотно ли так использовать styled components?

    GreyCrew
    @GreyCrew
    Full-stack developer
    С точки зрения проектированя я бы импортировал конкретные, нужные стили. Но возможно это дело удобства. Покуда я бывает не все стили использую в конкретных компонентах.
    import {Login, LoginWrap, DataInput} from '../styledComponents/login.js'


    return(
        <LoginWrap>
          <Login>
              <img src={logo} alt='logo'/>
              <h3>Login</h3>
            <DataInput>
              <input placeholder='Login' ref={loginInput}/>
              <input placeholder='Password' type='password' ref={passInput}/>
            </DataInput>
            <span>{loginError} &#160;</span>
            <input type='submit' value='Login' onClick={onLogin}/>
          </Login>
        </LoginWrap>
      )
    Ответ написан
    2 комментария
  • Как бороться с дыркой если justify-content:space-between?

    AndrewHaze
    @AndrewHaze
    Умею гуглить яндексом
    Есть такой хак
    <flex элемент с justify-content:space-between>:after {
            content: "";
            flex: auto;
            justify-content: flex-start;
    }

    правда в IE всё как всегда
    Ответ написан
    2 комментария
  • Как проверить, загрузится ли фотография?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    если вы имеете в виду что фото приходит на ваш сайт со стороннего апи и может быть "битым", можно использовать что то типа
    <img src="other_site_img.jpg"  onerror="this.src='sad_cat.jpg';" />
    Ответ написан
    Комментировать
  • Как переключать стили разным компонентам?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Подход с display: none в React разработке использовать не принято.

    Условный рендеринг
    Подъем состояния
    Ответ написан
    Комментировать
  • Как переключать стили разным компонентам?

    pterodaktil
    @pterodaktil
    js developer
    в NewsBigScreen абсолютно бесполезно display/setDisplay/useState
    const NewsElement = (props) =>{
      ...
      return(
        ...
          <NewsBigScreen display={display} setDisplay={setDisplay} />
        ...
      )
    }
    
    const NewsBigScreen = ({ display, setDisplay }) =>{
      const closeBigScreen = () =>{
          setDisplay('none')
      }
    
      return(
        <div className='newsBigScreenWrap' style={{display: display}}>
          <div className='blackBackground'>
          </div>
          <div className='NewsBigScreen' >
            <input type='submit' onClick={closeBigScreen}/>
          </div>
        </div>
      )
    }
    Ответ написан
    Комментировать
  • Как загружать данные с базы данных порциями?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Прочитать, что такое пагинация и реализовать ее на стороне сервера.

    URL запроса будет выглядеть примерно так:
    GET 'https://api.mysite/data?page=2&limit=20&sort=name'

    Параметров может быть сколько угодно, это и сортировка, и поиск, и фильтрация.
    Ответ написан
    Комментировать
  • Почему React Router this.props.match.param не существует?

    AplexPlex
    @AplexPlex Автор вопроса
    Помимо этого я неправильно пытался получить данные.
    Я пытался получить данные через.
    this.props.match.param
    Но match не существовало. Не знаю почему но при использовании connect Redux параметры передаются через него.
    import * as PropTypes from 'prop-types';
    import * as React from 'react';
    import { connect } from 'react-redux';
    import { RouteComponentProps } from 'react-router-dom';
    import { Dispatch } from 'redux';
    import { IDispatchProps, StudentActions } from '../../actions/studentActions';
    import { IAppState } from '../../types';
    import { AnswerForm } from './AnswerForm';
    
    interface IStateProps {
      serverConnectError: boolean;
      serverDataError: boolean;
      authState: boolean;
      activeTest: number;
      testIssuesList: [object];
      testState: [object];
      id: number;
    }
    
    interface IRouterProps {
      id: number;
    }
    
    type IProps = IStateProps & IRouterProps;
    
    type TProps = IDispatchProps & IStateProps;
    
    class TesterForm extends React.Component<TProps> {
      public static contextTypes = {
        router: PropTypes.object,
      };
      constructor(props: any, context: any) {
        super(props, context);
      }
      public componentWillMount() {
        alert(this.props.id);
        this.props.studentActions.getTestIssues(this.props.activeTest);
      }
    
      public render() {
        return(
          <div className='row'>
            <AnswerForm/>
          </div>
        );
      }
    }
    
    function mapStateToProps(state: IAppState, ownProps: RouteComponentProps<IRouterProps>): IProps {
      return {
        serverConnectError: state.commonReducer.serverConnectError,
        serverDataError: state.commonReducer.serverDataError,
        authState: state.commonReducer.authState,
        activeTest: state.studentReducer.activeTest,
        testIssuesList: state.studentReducer.testIssuesList,
        testState: state.studentReducer.testState,
        id: ownProps.match.params.id, // Здесь передаются параметрвы
      };
    }
    
    function mapDispatchToProps(dispatch: Dispatch<IDispatchProps>): IDispatchProps {
      return {
        studentActions: new StudentActions(dispatch),
      };
    }
    
    const connectApp = connect(mapStateToProps, mapDispatchToProps)(TesterForm);
    
    export {connectApp as TesterForm};
    Ответ написан
    Комментировать
  • Как асинхронно получить данные из reudx?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. В экшене меняем строку:
    .then(data => dispatch(fetchSuccess(data.success)))


    2. В редьюсере:
    case 'LOGIN_USER_SUCCESS':
      return {
        ...state,
        key: action.key, 
      };


    3. connect:
    const mapStateToProps = state => ({
      success: state.authorisation.key,
    });
    
    export default connect(mapStateToProps)(YourComponent);


    По-хорошему исправить:
    authorisation ----> authorization
    Ответ написан
    Комментировать
  • Как сделать полноценные логин Flask + React?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. При успешной авторизации передавайте на клиент токен.
    2. Храните токен в cookie. Проверяйте его наличие при инициализации и либо отрисовывайте вариант для залогиненного пользователя, предварительно скачав его данные, либо для гостя.
    3. Располагая такими данными как id пользователя, вы с легкостью можете отличать стоит ли вам показывать кнопку edit в профиле или нет:
    const { me, user } = this.props;
    const isOwner = me.id === user.id;
    
    return (
      <>
        {isOwner && <Button onClick={this.handleEditClick}>Edit</Button>}
        {/* other jsx */}
      </>
    );

    где me - текущий залогиненный пользователь, user - пользователь чей профиль загружен.

    4. Само собой, все права надо проверять на стороне сервера. Для этого токен следует посылать в заголовках запросов.

    Есть какой-то материал для осознания, как реализовать полноценный логин

    Материала в интернете по теме море, только откройте Google и сделайте нужный запрос. Статей и руководств, которые содержат в себе все без исключения кейсы естественно нет, поэтому изучайте разные источники.
    Ответ написан
    Комментировать
  • Почему выдаёт 404 ошибку при запросе данных?

    @pcdesign
    На сколько я понимаю вы во flask создали роут с методом POST
    @app.route('/test', methods=['POST'])

    А запрос посылаете в реакте обычным GET, поэтому и получается 404.
    https://stackoverflow.com/questions/38510640/how-t...
    Ответ написан
    5 комментариев
  • Как изменить текст в html при помощи react?

    @kova1ev
    если компонент определен через функцию:
    import React, { useState} from "react";
    
    function App() {
      const [value, setValue] = useState("Hello");
    
      const handleClick = (e) => {
        setValue(prompt("введите значение", value))
      }
    
      return (
        <div className="App">
          <ul>
            <li onClick={handleClick}>{value}</li>
          </ul>  
        </div>
      );
    }


    если через класс, то используйте State и setState для изменения.
    Ответ написан
    Комментировать
  • Ошибка при попытке изменить html текст с помощью React js, как исправить?

    Я бы не рекомендовал так пользоваться React...

    Но попробуйте так:

    changeScore(e){
         e.target.textContent = prompt('Enter score',  e.target.textContent);
    }
    Ответ написан
    Комментировать
  • Как преобразовать строку '[1,2,3,4]' в массив?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    var array = JSON.parse('[{"name":"user_ce820531","lvl":1,"time":"1:54"},{"name":"user_ce820531","lvl":1,"time":"1:07"}]');
    Ответ написан
    Комментировать