• Как убедить back end что front сделан правильно?

    @Yurajun Автор вопроса
    Ибо почему люди привыкли работать по старинке и для них файл собранный webpack это ужас какой то. А еще в проекте eslint подключен и он нагибает всех тех кто пишет неправильно, а его наверное это бесит. Да вообще я не понимаю че ему не так
  • Как заменить пустой таб на любое число?

    @Yurajun Автор вопроса
    Да, все верно поняли. Спасибо
    Конечное решение
    let newStr = el.replace(/\t{2}/g, '\t0\t');
    newStr = newStr.replace('\t\t', ' 0 ');
  • Как заменить пустой таб на любое число?

    @Yurajun Автор вопроса
    То есть ни как не получится вставить 0 между табами?
  • Есть ли возможность найти в строке второй таб или пробел?

    @Yurajun Автор вопроса
    Что то не получается
    const text = `    300	400	500	700
    1800    1830		1850    300
    1900    1930    1940    1950    `;
    					let arr = text.split('\n');
    					console.log(console);
    					arr = arr.map(el => {
    						console.log(el);
    						el.replace('\t\t', ' 0 ');
    						console.log('new el ', el);
    						return el.replace(/\s+/g, ' ').trim();
    					});
    					console.log(arr);
  • Как добавить в объект другой объект в тот же ключ?

    @Yurajun Автор вопроса
    Сам склонялся к решению с Object.assign только что то не разобрался.
    Спасибо работает )
  • Как правильно изменять store в redux?

    @Yurajun Автор вопроса
    Извините что я вас достал с этим вопросом, но по моему я нашел решение.
    1) я создал stor вне класса
    2) В классе в конструкторе сделал ссылку на store
    import {applyMiddleware, createStore} from 'redux';
    import {composeWithDevTools} from 'redux-devtools-extension';
    import thunk from 'redux-thunk';
    import reducer from '../reducers';
    
    const store = createStore(
    	reducer,
    	composeWithDevTools(applyMiddleware(...[thunk])),
    );
    
    const priceSum = () => console.log(store.getState());
    store.subscribe(() => {
    	priceSum();
    });
    
    export class WindowCalculator {
    	constructor() {
    		this.$casement = $('.js-calculator-window');
    		this.store = store;
    	}
    
    	priceSum() {
    		console.log('sum ', this.store.getState());
    	}

    И теперь все работает как нужно. Помогла ваша подсказка, что я создал кучу экземпляров store
  • Как правильно изменять store в redux?

    @Yurajun Автор вопроса
    Состояния сбрасываются потому что ADD_MOSQUITO приходит во все reducers , a так как в каждом есть default return state то и на выходе остается только то что попало под case ADD_MOSQUITO , остальные переписываются в дефолтные
  • Как правильно изменять store в redux?

    @Yurajun Автор вопроса
    Спасибо за ответ, но все таки как нужно сделать правильно.

    export const getPriceColor = obj => dispatch => {
      const res = getPriceColorApi(obj);
      dispatch({
        type: obj.name,
        payload: res,
      });
    };

    В этом месте у меня заглушка стоит. Я знаю что нужно писать async await и так далее. Просто оставил себе для подсказки, что здесь нужно будет писать запрос к db. Сейчас тут обычная функция которая просто возвращает res.

    Подскажите, почему у меня несколько копий состояния.

    И вызов
    mosquitoNet({
    				name: !$stvorkaBox.hasClass('is-mosquito-grid')
    					? AppConstants.ADD_MOSQUITO
    					: AppConstants.REMOVE_MOSQUITO,
    				options: {
    					[mosquitoId]: {type: 'standart'},
    				},
    			})(this.dispatch);

    export default (state = initialState, {type, payload}) => {
    	console.log('mosquito ', type);
    	switch (type) {
    		case AppConstants.ADD_MOSQUITO:
    			return {...state, ...payload};
    		case AppConstants.REMOVE_MOSQUITO:
    			delete state[Object.keys(payload)];
    			return state;
    		default:
    			return state;
    	}
    };

    в консоле все как и задумывалось mosquito ADD_MOSQUITO
  • Как использовать redux в разных классах js?

    @Yurajun Автор вопроса
    Здравствуйте еще раз. Извините можно еще один вопросик.
    Я тут откладывал решение этой задачи, но сейчас опять к ней вернулся.
    И у меня возник вопрос.
    У меня есть родительский класс в котором я создаю store
    this.store = createStore(
        reducer(),
        composeWithDevTools(applyMiddleware(...[thunk])),
    );

    И есть 3 класса которые унаследуются от этого класса

    Как я создаю reducers
    import {combineReducers} from 'redux';
    import priceColor from './color-scheme';
    import includeMosquitoInPrice from './includeMosquitoInPrice';
    import mosquitos from './masquitos';
    
    export default () =>
    	combineReducers({
    		priceColor,
    		includeMosquitoInPrice,
    		mosquitos,
    	});

    Сами reducers
    import AppConstants from '../actionTypes';
    
    const initialState = {};
    
    export default (state = initialState, {type, payload}) => {
    	switch (type) {
    		case AppConstants.ADD_MOSQUITO:
    			return {...state, ...payload};
    		case AppConstants.REMOVE_MOSQUITO:
    			delete state[Object.keys(payload)];
    			return state;
    		default:
    			return state;
    	}
    };

    import AppConstants from '../actionTypes';
    
    const initialState = {sill: 0, otkos: 0};
    
    export default (state = initialState, {type, payload}) => {
    	switch (type) {
    		case AppConstants.GET_COLOR_PRICE_OTKOS:
    			return {...state, otkos: payload};
    		case AppConstants.GET_COLOR_PRICE_SILL:
    			return {...state, sill: payload};
    		default:
    			return state;
    	}
    };

    Экшены которые вызывают dispatch (лежат в отдельном файле)
    export const getPriceColor = obj => dispatch => {
    	const res = getPriceColorApi(obj);
    	dispatch({
    		type: obj.name,
    		payload: res,
    	});
    };
    export const mosquitoNet = obj => dispatch => {
    	dispatch({
    		type: obj.name,
    		payload: obj.options,
    	});
    };

    И их я вызываю в разных классах
    getPriceColor(this.options)(dispatch);
    mosquitoNet({
        name: !$stvorkaBox.hasClass('is-mosquito-grid')
            ? AppConstants.ADD_MOSQUITO
            : AppConstants.REMOVE_MOSQUITO,
        options: {
            [mosquitoId]: {type: 'standart'},
         },
     })(dispatch);

    Все работает и state меняется, но вот одна проблема, когда я меняю state из одного класса и вызываю функцию mosquitoNet то type экшена (например ADD_MOSQUITO ) приходит во все reducers и все остальные свойства state возвращаются в исходное состояние.
    Как можно избежать этого, ну то есть если вызвали функцию обновления state в одном классе то и сработать должен только тот dispatch который я вызываю в этом классе.
  • Как использовать redux в разных классах js?

    @Yurajun Автор вопроса
    Возможно ли такое решение.
    Класс color-scheme.js
    export class ColorSheme {
    	constructor(selector, store) {
    		this.$select = $(selector);
    		console.log('js');
    		store.dispatch({
    			type: 'ADD_TRACK',
    			payload: 'Simple like spirit !!!!!!!!!!',
    		});
    	}
    }

    Файл app.js
    import {ColorSheme} from '../blocks/calculator/color-scheme/color-scheme';
    
    (() => new ColorSheme('.js-color-scheme', store))();


    И тогда у меня отрабатывает store.subscribe и я получаю объект с двумя значениями.
    Насколько такое решение правильно ?
  • Как настроить ssh для другого аккаунта git?

    @Yurajun Автор вопроса
    Спасибо, все заработало. Оказывается там письмо с приглашение на почту приходит, а в нем кнопка принять приглашение, когда перешел по этой ссылке все заработало.
  • Как настроить ssh для другого аккаунта git?

    @Yurajun Автор вопроса
    То есть нужно добавить в collaborators свой второй аккаунт в котором прописан ssh.
    Или нужно что то еще сделать?
  • Есть ли способ разделить import файлов препроцессора styl?

    @Yurajun Автор вопроса
    Легче показать о чем я спрашиваю
    5cc5e69b778b8154662296.jpeg
    то что я хочу не в task разделение делать, а именно в стилевых файлах.
    Мне кажется такого способа нет. Как бы остается один, это переименовать все файлы которые будут глобально (.g.style) и локально (.l.styl) и тогда я буду выбирать для оной сборки локальные файлы, а для другой глобальные.
    Но все равно спасибо за ответ.
  • Как правильно отправить и обработать данные на сервере методом json?

    @Yurajun Автор вопроса
    Тогда другой вопрос, как правильно собрать данные в JSON из этой формы?
  • Как правильно воспользоваться async await?

    @Yurajun Автор вопроса
    И правда ) , теперь все работает. Спасибо )
    Но тут еще пока что играет роль, что вообще не понятно, что вся эта конструкция должна возвращать, опыт работы с этой технологией всего вечер. Учту на будущее
  • Как правильно воспользоваться async await?

    @Yurajun Автор вопроса
    Спасибо за решение, я рад что вы решили мне помочь.
    Я запустил ваш код и в консоле получил.
    0: {image: undefined}
    1: {image: undefined}
    2: {image: undefined}
    3: {image: undefined}
    4: {image: undefined}

    Это наверное потому, что здесь не то возвращается. Если в первом решении возвращали return fetch то все работало, то здесь нет. Может я не все еще до конца понял в этой технологии, но первое решение работает.
    Еще раз спасибо что уделили мне время.
  • Как включить подсветку синтаксиса в `` кавычках?

    @Yurajun Автор вопроса
    Почему angular в шаблоне html не понимает побитовые операции ?
    Код вида {{(5 & 1) === 1}} вызовет ошибку, а
    {{(5 % 2) === 1}} нормально работает.
  • Как получить id категории при клике по категории?

    @Yurajun Автор вопроса
    Мое решение:
    import React from 'react';
    import {connect} from 'react-redux';
    import {compose} from 'redux';
    import {NavLink, withRouter} from 'react-router-dom';
    import PropTypes from 'prop-types';
    
    const Categories = ({categories}) => {
    	console.log(categories);
    	return (
    		<div className="categories-wrap">
    			<div className="">categories</div>
    			<ul className="categories-list">
    				{categories &&
    					categories.map((category, index) => {
    						if (index === 1) {
    							return (
    								<li key={index}>
    									<NavLink
    										activeClassName="active"
    										exact
    										to={`/category/${category.id}`}
    									>
    										{category.name}
    									</NavLink>
    								</li>
    							);
    						}
    						return (
    							<li key={index}>
    								<NavLink to={`/category/${category.id}`}>
    									{category.name}
    								</NavLink>
    							</li>
    						);
    					})}
    			</ul>
    		</div>
    	);
    };
    
    const mapStateToProps = state => ({
    	categories: state.categories,
    });
    
    export default compose(
    	withRouter,
    	connect(
    		mapStateToProps,
    		null,
    	),
    )(Categories);
    
    Categories.propTypes = {
    	categories: PropTypes.array,
    	props: PropTypes.object,
    };

    В этом случае NavLink ставит класс active по клику, а если убрать compose то уже не работает.
    Дальше в компоненте phones я добавил ownProps в который при клике по Link прилетает id категории
    5c099d4316427919597001.jpeg
    Компонент phones
    import React from 'react';
    import {connect} from 'react-redux';
    import PropTypes from 'prop-types';
    
    import {fetchPhones, fetchCategories} from '../actions';
    import {renderPhone} from './renderPhone';
    
    const Phones = props => {
    	props.fetchPhones();
    	props.fetchCategories();
    	const {phones} = props;
    
    	return (
    		<div className="container-phones">
    			{phones.map((phone, index) => renderPhone(phone, index))}
    		</div>
    	);
    };
    
    const mapStateToProps = (state, ownProps) => {
    	console.log(ownProps);
    	return {
    		phones: state.phones,
    	};
    };
    
    const mapDispatchToProps = {
    	fetchPhones,
    	fetchCategories,
    };
    
    export default connect(
    	mapStateToProps,
    	mapDispatchToProps,
    )(Phones);
    
    Phones.propTypes = {
    	fetchCategories: PropTypes.func,
    	fetchPhones: PropTypes.func,
    	phones: PropTypes.array,
    };

    И вот теперь можно будет сортировать телефоны ) . Надеюсь дальше будет проще )
  • Как получить id категории при клике по категории?

    @Yurajun Автор вопроса
    Автор сделал так . Он получил ownProps по клику по Link
    const mapStateToProps = (state, ownProps) => {console.log(ownProps); return({
      categories: getCategories(state),
      activeCategoryId: getActiveCategoryId(ownProps)
    })}

    получал объект
    5c099296da8e7973012248.jpeg
    после чего кидал этот объект в функцию
    export const getActiveCategoryId = ownProps => R.path(['params', 'id'], ownProps)

    и получал id
    этот id передается в компонент и на основе него и подсвечивается нажатый Link.
    Я так понимаю router v 4 уже так не работает.

    Да, хочу получить id активной категории.