
Anton
22.03.2017
01:21:54

Oleg
22.03.2017
04:30:20
Всем привет!

Artem
22.03.2017
06:08:38
Люди, подскажите пожалуйста как мне react-script-loader в роли миксина использовать в ES6 синтаксисе?
var React = require('react');
var ReactScriptLoaderMixin = require('react-script-loader').ReactScriptLoaderMixin;
var PaymentForm = React.createClass({
mixins: [ ReactScriptLoaderMixin ],
...
render: function() {
if (this.state.stripeLoading) {
return <div>Loading</div>;
}
else if (this.state.stripeLoadingError) {
return <div>Error</div>;
}
else {
return <div>Loaded!</div>;
}
}
});
module.exports = PaymentForm;

Anton
22.03.2017
06:09:35
ReactScriptLoaderMixin(PaymentForm) ?

Google

Artem
22.03.2017
06:09:53
компонентом высшего порядка?
это сработает?
var ReactScriptLoaderMixin = {
componentDidMount: function() {
if (typeof this.getScriptURL !== 'function') {
throw new Error("ScriptLoaderMixin: Component class must implement getScriptURL().")
}
ReactScriptLoader.componentDidMount(this.__getScriptLoaderID(), this, this.getScriptURL());
},
componentWillUnmount: function() {
ReactScriptLoader.componentWillUnmount(this.__getScriptLoaderID(), this.getScriptURL());
},
__getScriptLoaderID: function() {
return 'id' + idCount++;
},
};

Anton
22.03.2017
06:27:28
имплементировать mount/unmount в исходном компоненте и ReactScriptLoaderMixin.fn.call(this)
Object.assign(PaymentForm.prototype, ReactScriptLoaderMixin) тоже сработает. Но только один раз.

Artem
22.03.2017
06:29:14
имплементировать mount/unmount в исходном компоненте
можно чуть подробнее пожалуйста...

Anton
22.03.2017
06:31:39
Когда выпиливали миксины они подробно описали как без них жить, и почему это хорошо.
Как без них жить - в нужных местах дергать напрямую.

Artem
22.03.2017
06:32:18
componentDidMount и componentWillUnmount
в исоходном компоненте, я должен просто вызвать миксин с передачей контекста?

Anton
22.03.2017
06:32:23
Если в миксине миксуются mount/unmount - значит эти функции надо описать у себя, и из них дернуть функции миксина.

Artem
22.03.2017
06:32:53
попробую
спасибо

Google

Anton
22.03.2017
06:33:06
Можно попробовать найти готовую поделку которая подружит класс с миксинами в es6 реализации. Там реально просто прототип пнуть и готово
Ага, так и прийдется, так как еще __getScriptLoaderID надо запинуть не забыть. Они его не правильно сделали

Artem
22.03.2017
06:35:41
понял ))
пипец там ещё и idCount глобальная переменная
мне её получается в state исходного компонента держать?

your-mirror
22.03.2017
06:42:13
Как вы реализуете сложные компоненты типа таблицы, где вам нужно конфигурировать хедер, футер, фильтр, пагинацию и само тело?

Max
22.03.2017
06:42:56
Пропс?

Dreamerinnoise
22.03.2017
06:43:33
И задаю пропсами

your-mirror
22.03.2017
06:43:52
а если у вас это все отдельные классы, которые тоже можно подменять?

Mikhail
22.03.2017
06:43:54
src/components/pagination/Pagination.jsx · master · Mikhail Tsyplakov / heaven-hr-assignment · GitLab
https://gitlab.com/jaybekster/heaven-hr-assignment/blob/master/src/components/pagination/Pagination.jsx
Я так делал. Вроде годно

Max
22.03.2017
06:44:14

your-mirror
22.03.2017
06:44:57
есть компонент таблица состоящий их дефолтных Header, Footer, Body компонентов. Ты может помеять Header на SmartHeader, тоже самое с остальными

Dreamerinnoise
22.03.2017
06:45:32
В дефолт пропсах устанавливаешь обычный хедер

Max
22.03.2017
06:46:10
Посмотри в доке по реакт есть пример

your-mirror
22.03.2017
06:46:50
ну т.е. типа <Table header={{class: SmartHeader}} ... /> ?

Max
22.03.2017
06:47:32
https://facebook.github.io/react/docs/composition-vs-inheritance.html

Google

Max
22.03.2017
06:47:50
Курим ман)

your-mirror
22.03.2017
06:58:38
а если компоненты динамические, т.е. зависят от пришедших данных, скажем если пришел номер телефона юзаем такой компонент, если пришел текст юзаем другой?

Oleg
22.03.2017
07:05:11
точнее рендим другой компонент
в зависимости от состояния

Max
22.03.2017
07:05:37
У тебя таких таблиц сколько?

your-mirror
22.03.2017
07:06:06
хватает

Max
22.03.2017
07:06:34
Хватает не ответ. Сам компонент таблицы за что отвечать должен?
В таком случае
Если рендеринг отдельно всего

Oleg
22.03.2017
07:07:12
может отображение в виде таблицы, а компоненты могут быть ну сильно разные
компонент - это ещё и поведение

Max
22.03.2017
07:07:53
Вы там вдвоём?)

your-mirror
22.03.2017
07:07:58
вообще все сложнее гораздо.
есть ItemsProvider, поставляющий данные. Есть какой-то темплейт, который можно указать и он будет его рендерить и пропихивать данные в этот темплейт, как пример был таблица

Max
22.03.2017
07:08:51
Короче

your-mirror
22.03.2017
07:08:59
я все это реализовал уже и мне просто стало интересно как сделали другие, hoc мне не подошел, с пробросом children я не помню, но тоже какие-то проблемы были

Max
22.03.2017
07:09:46
<parent><item1/><item2/></parent>
Если тебе только инжектить данные нужно
В рендере итерация по чайлдам
И инжект

Google

Max
22.03.2017
07:12:49
Не?
Но если у тебя структура не плоская внутри не подойдёт (

your-mirror
22.03.2017
07:13:51
http://pastebin.com/H5tguUpE
мне кажется по такому будет тяжело пробежаться или по такому пробежишь?
ну да
в этом и была проблема, теперь я вспомнил )

Admin
ERROR: S client not available

Max
22.03.2017
07:17:43
Чот дохера сложно
Я бы сделал таки разные компоненты таблиц с одним интерфейсом)

your-mirror
22.03.2017
07:19:52
эм, ну тогда лишишься компонуемости и весь профит в переиспользовании уйдет

Max
22.03.2017
07:20:04
Но опять же код твой не вижу
Вижу

your-mirror
22.03.2017
07:20:57

Max
22.03.2017
07:21:23
Испарил опечатку

your-mirror
22.03.2017
07:28:02
Таблицы в этом плане коварны очень, если где-то можно просто запихнуть 1 потомка или они были бы жестко структуированы, то было бы все проще

Pavel
22.03.2017
08:02:51

your-mirror
22.03.2017
08:12:08

Вика
22.03.2017
08:34:00

Google

Вика
22.03.2017
08:34:02

Dmitry
22.03.2017
08:35:01
Ну наконец-то на мир посмотрел

Вика
22.03.2017
08:36:30

Миша
22.03.2017
08:40:36
баньте шаболду

your-mirror
22.03.2017
08:45:46

Ilnur
22.03.2017
08:50:38
Вай вай вай какие картинки!

Максим
22.03.2017
08:51:00
первый раз спам вынудил меня подписаться)

Ilnur
22.03.2017
08:52:59
вот так и теряются бойцы невидимого фронта
?

Andrey
22.03.2017
08:54:13
погодите. бан только после предупреждения, вы нарушаете правила баня без предупреждения :)

Arsen
22.03.2017
08:56:27