Ответы пользователя по тегу JavaScript
  • Как выполнить функцию, когда появился элемент?

    idtimeless
    @idtimeless
    Front-end Developer
    $(document).ajaxStop(function () {
    // ваш код
    });
    Ответ написан
    Комментировать
  • В чем ошибка в использовании jQuery?

    idtimeless
    @idtimeless
    Front-end Developer
    ну потому что все внутри $(document).ready отрабатывается сразу после загрузки,
    а так как элемента $("#react-dat") еще нет в дом дереве - то и нет привязки)

    вещайте инициализатор после монтирования елемента (componentDidMount)
    Lifecycle methods
    React components

    наверное вот более правильное решение если уж нужно использовать jQuery

    export default class Link extends Component {
      constructor(props) {
        super(props);
      }
    
      componentDidMount() {
        this.onMouseEnterHandler()
      }
    
      onMouseEnterHandler() {
        $(this.refs.link).mouseover(function(ev){
          console.log(ev.currentTarget.text)
        });
      }
    
      render() {
        return (
            <a href='' ref='link'>My link</a>
        );
      }
    }


    или вот более расширенное
    export default class Link extends Component {
      constructor(props) {
        super(props);
        this.state = {
          title: 'Login'
        };
      }
      componentDidMount() {
        this.onMouseEnterHandler()
      }
      shouldComponentUpdate(nextProps, nextState) {
        return nextState.title !== this.state.title;
      }
    
      changeLoginState() {
        this.setState(({title}) => {
          return {title: 'Log out'};
        });
      }
    
      onMouseEnterHandler() {
        const link = $(this.refs.link)
        link.mouseover((ev) => {
          console.log(ev.currentTarget.text)
        });
        link.on('click', (ev) => {
          ev.preventDefault()
          this.changeLoginState()
        });
      }
    
      render() {
        const {title} = this.state
        return (
          <a href='' ref='link'>{title}</a>
        );
      }
    }
    Ответ написан
    6 комментариев
  • Как удалить объекты из массива с повторяющимися свойствами?

    idtimeless
    @idtimeless
    Front-end Developer
    если нужно удалить идентичные
    function uniq(arr) {
        const index = [];
        return arr.filter((elem) => {
            const str = JSON.stringify(elem);
            return index.includes(str) ? false : index.push(str);
        });
    }


    если нужно удалить по ключу - этот вариант
    function onlyUniq(myArr, key) {
        return myArr.filter((obj, pos, arr) => {
            return arr.map(el => el[key]).indexOf(obj[prop]) === pos;
        });
    }
    Ответ написан
    Комментировать