
localvoid
25.03.2017
07:11:58
так у него же типа "совместимость", должно итак всё работать :)

Denis
25.03.2017
07:48:22
Вот что это за ?
require.ensure(['./maps'], function (require) {
TypeError: require.ensure is not a function

yadro
25.03.2017
07:51:06
Привет чат
Как сделать правильно с т зрения архитектуры. Есть список фильтров, пользователь может их редактировать, при запуске они подгружаются из storage. Но есть системные фильтры, их нельзя изменять / удалять. Как их хранить? При первом запуске их просто добавить в список, и потом надеятся что не пропадут?

Pavel
25.03.2017
08:02:07

Google

Pavel
25.03.2017
08:03:25
3. Каков формат данных фильтров?

yadro
25.03.2017
08:04:26
1 redux, с сохранением в localStorage.
2 Ну нельзя исключать что их там не будет.
3 массив объектов

Pavel
25.03.2017
08:07:17
const systemFilterList = [
doc => doc.type != 1,
doc => doc.type != 2,
doc => doc.name != 'bla',
]
const selectFiltered = (state, customFilterList) => {
const filterList = [
...customFilterList,
...systemFilterList
]
// USE IT
}

yadro
25.03.2017
08:08:48
хм, неплохо, спасибо)
однако я не знаю где мне брать customFilterList, у меня есть только стейт со всеми фильтрами

Pavel
25.03.2017
08:11:29
customFilterList - это пользовательские фильтры
Вы их передаете в mapStateToProps
Где и происходит фильтрация

yadro
25.03.2017
08:13:26

Pavel
25.03.2017
08:14:56

yadro
25.03.2017
08:15:36

Pavel
25.03.2017
08:15:58
Вторым параметром является mapDispatchToProps, которые позволяет сделать map actionCreator-ов на props.
Так же есть упрощенная форма записи второго параметра в виде объекта, ключами которого являются названия props, а значениями нужные вам actionCreator, которые автоматически оборачиваются в dispatch.

Google

Pavel
25.03.2017
08:18:11
И вам остается только вызвать их внутри комопнента, например если у вас есть actionCreator "doSomething" и вы вызваете его в классическом виде store.dispatch(doSomething()), то при connect(null, { doSomething })(YourComponent) вы можете вызывать его this.props.doSomething().

yadro
25.03.2017
08:35:22
каждому свои

Pavel
25.03.2017
08:36:28
Все зависит от того, где вы храните customFilterList в приложении. Если он приходит из какого-то верхнеуровнего компонента, передайте его оттуда.
connect дополняет props компонента, а не заменяет их

yadro
25.03.2017
08:38:54
customFilterList хранится в редаксе

Ruslan
25.03.2017
08:39:35
connect один в компоненте

yadro
25.03.2017
08:41:19

Ruslan
25.03.2017
08:41:35
Это HOC, который добавляет в props переданные actions и данные из стор(oв)

andretshurotshka?❄️кде
25.03.2017
08:41:42

yadro
25.03.2017
08:41:56
из state

andretshurotshka?❄️кде
25.03.2017
08:42:39
и что не так тогда?)

Pavel
25.03.2017
08:43:32
И если вы храните customFilterList в state - то вам не нужно его передавать в виде props в компонет.
Вы должны вызвать селектор с нужным списком пользовательских фильтров.

yadro
25.03.2017
08:44:44
я переписал так, что filterList не просто берется из стейт, а модифицируется. Те я передаю filterMapStateToProps, который возвращается {filter}, но мне нужно {filter, something1} и {filter, something2}
может в гист написать полный пример?

Pavel
25.03.2017
08:45:26
Именно

yadro
25.03.2017
08:45:53

Google

Pavel
25.03.2017
08:46:05
Именно = Да

yadro
25.03.2017
08:50:12
https://gist.github.com/Yadro/e4e74cd04df316195ddc19dd9909eaae

Pavel
25.03.2017
08:51:22
Вы скопировали, то что вы писали до этого - нужен боевой пример и что вы хотите добиться.
Не понимаю от какого дублирования нужно избавиться, если вам нужны в компоненте определенные части state, то за вас никто это придумать не может.
Фильтер не нужно передавать в компонет.
Фильтрацию, как я писал ранее нужно делать в mapStateToProps.
И системные фильтры переместить в selector-ы.

yadro
25.03.2017
08:56:05

Pavel
25.03.2017
08:56:35
Повторяю в третий раз - вы это делаете в selector-е.
const systemFilterList = [
doc => doc.type != 1,
doc => doc.type != 2,
doc => doc.name != 'bla',
]
const selectFiltered = (state, customFilterList) => {
const filterList = [
...customFilterList,
...systemFilterList
]
// USE IT
}

yadro
25.03.2017
08:57:34
значит мне нужно почитать что есть селекторы

Pavel
25.03.2017
08:57:48
А в mapStateToProps:
const mapStateToProps = state => ({
filteredData: selectFiltered(state, state.customFilterList)
})

yadro
25.03.2017
08:58:53
в принципе логично

Ches
25.03.2017
09:37:35
можете подсказать как убрать эту ошибку?
XMLHttpRequest cannot load http://localhost:3001/socket.io/?EIO=3&transport=polling&t=Li4qipF. The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin 'http://localhost:3000' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
пытаюсь сделать чат с клиента на реакте на сервер на ноду
с 3000 локалхоста на 3001 запросы
на ноде вроде все разрешено

Karl
25.03.2017
09:47:41
Включи корс на ноде

Ches
25.03.2017
09:48:29

Google

Ches
25.03.2017
09:48:55
я думаю возможно это react-create-app что то меняет в запросе
нода самая простая сейчас, на 10 строчек

Ivan
25.03.2017
09:49:20
как правильно передавать props в компонент в React Router. <Route path="/" component="вот в этот компонент"?>

Ches
25.03.2017
09:50:39
нода запросы принимает, выводит их в консоль лог, но потом на клиенте что то блочится

Дмитрий
25.03.2017
09:53:05
А что за возня вышла?
Асинхронные роуты нельзя просто так перезагрузить при изменениях, плюс в react-router =< 3 wontfix issue, спамит в консоль warning`ами, все советуют патчить console.warn ?
Выкинул реакт-роутер

Ches
25.03.2017
09:58:59
исправил мою ошибку добавив "proxy": "http://localhost:3001", в package.json на клиенте, но так и не понял как это все работает

Алексей
25.03.2017
09:59:01
нода запросы принимает, выводит их в консоль лог, но потом на клиенте что то блочится
ну так он же тебе пишет что ты cors запрос отправляешь. видно же что у тебя сервак и js приложение на разных портах, конечно он тебе будет кидать такой ворнинг. у тебя два варианта, либо отдавать статику нодовским серваком (ну конечно можно поставить проксю, типа nginx и им отдавать и проксировать запросы еще на нодовскую прилагу), либо отдавать уже серваком хэдер Access-Allow-Origin

Admin
ERROR: S client not available

Ches
25.03.2017
10:01:38
const cors = require('cors');
app.use(cors());
или app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
или один из этих
// io.set('origins', '*:*');
// io.set( 'origins', '*domain.com*:*' );
// io.set('origins', 'http://localhost:3000');

Denis
25.03.2017
10:18:33

Pavel
25.03.2017
11:02:08
snipet - propTypes.isDefined
Возможность prop быть null и при этом isRequired
const isDefined = (props, propName, componentName) => typeof props[propName] === 'undefined' && new Error('${ propName } undefined')

Denis
25.03.2017
11:03:54

Pavel
25.03.2017
11:20:00
https://github.com/jtmthf/react-router-match-async

Denis
25.03.2017
11:23:16
Реализовать это 10-20 строчек

Google

Denis
25.03.2017
11:23:25
Тут вопрос скорее почему это не в кор

Karl
25.03.2017
12:19:19
Гайз, а поясните чем тайпскрипт так плох? (Чето его просто все тут хейтят, приколы всякие про него)

Denis
25.03.2017
12:21:53
Вот тут не хейтят https://t.me/typescript_ru

Filip
25.03.2017
12:24:01

Pavel
25.03.2017
12:29:09

Vladimir
25.03.2017
12:29:41

Ҫѐҏӗѫӑ
25.03.2017
12:30:11
там есть хейтеры
НЕ ГОДИТСЯ
ок

Pavel
25.03.2017
12:31:20
Это мнение, собственное.

Vladimir
25.03.2017
12:31:29
Он не годится ни для каких стадий проекта

Ҫѐҏӗѫӑ
25.03.2017
12:31:32
рефакторить без тс проще да?

Vladimir
25.03.2017
12:31:44
Да

Ҫѐҏӗѫӑ
25.03.2017
12:32:27
и вкручивать надо на поздних стадиях, и не рефакторить. клааасс
какая полезная штука (интересно чем? и зачем тогда вообще это делать?)
из сообщения Павла выходит, что ТС надо вкручивать когда проект сдох
збс занятие

Vladimir
25.03.2017
12:34:29
ТС не надо вкручивать никогда

Ҫѐҏӗѫӑ
25.03.2017
12:34:40
да да