• Как изменить переменную в родительском компоненте если в дочернем нет переменной?

    @askhat
    Вы не должны напрямую модифицировать состояние родительского компонента, это противоречит архитектуре однонаправленного потока данных. Вместо этого вы должны воспользоваться одной из следующих опций:

    1. Отправка события
    // parent.vue
    <template>
      <parent>
        <child @toggle-button="toggleButtonHandler"/>
      </parend>
    </template>
    <script>
    export default {
      data: {
        return {
          buttonShow: false
        }
      },
      methods: {
        toggleButtonHandler () {
          this.buttonShow = !this.buttonShow
        }
      }
    }
    </script>

    // child.vue
    <template>
      <button @click="clickHandler">Hide Button</button>
    </template>
    <script>
    export default {
      methods: {
        clickHandler () {
          this.$emit('toggle-button')
        }
      }
    }
    </script>

    Первый аргумент обработчика это объект события, а метод $emit принимает произвольные данные в качестве пейлоада события (второй аргумент обработчика).

    2. Воспользоваться стором
    // store.js
    export default {
      state: {
        buttonShow: false
      },
      mutations: {
        buttonToggle: state => (state.buttonShow = !state.buttonShow)
      }
    }

    Механика работы в компопненте почти такая же, за тем исключением что обработчик клика в дочернем компоненте должен коммитить мутацию:
    clickHandler () {
      this.$store.commit('buttonToggle')
    }

    А родительский компненте, в свою очередь, избаваляется от подписки на @toggle-button и больше не держит собственный стейт, а подписывается на стор:
    computed: {
      buttonShow () {
        return this.$store.state.buttonShow
      }
    }
    Ответ написан
    1 комментарий
  • Как настроить .gitignore (добавить node_modules в .gitignore)?

    Nazariy
    @Nazariy Автор вопроса
    1. Вырезаю папку node_modules локально из проекта
    2. Делаю коммит
    3. Вставляю node_modules обратно
    4. Добавляю node_modules в gitignore
    5. Делаю коммит, и вижу что node_modules туда уже не попадает
    Ответ написан
    Комментировать
  • Не работает Gulp, выдает ошибку?

    potapchino
    @potapchino
    var gulp = require('gulp');
    var browserSync = require('browser-sync').create();
    var sass = require('gulp-sass');
    
    gulp.task('sass', function(done) {
        gulp.src("scr/scss/*.scss")
            .pipe(sass())
            .pipe(gulp.dest("scr/css"))
            .pipe(browserSync.stream());
    
    
        done();
    });
    
    gulp.task('serve', function(done) {
    
        browserSync.init({
            server: "src/"
        });
    
        gulp.watch("scr/sass/*.sass", gulp.series('sass'));
        gulp.watch("scr/*.html").on('change', () => {
          browserSync.reload();
          done();
        });
      
    
        done();
    });
    
    gulp.task('default', gulp.series('sass', 'serve'));
    Ответ написан
    5 комментариев