Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Отказаться от callback функции в DataProvider #90

Open
Rebulus opened this issue Jan 26, 2017 · 10 comments
Open

Отказаться от callback функции в DataProvider #90

Rebulus opened this issue Jan 26, 2017 · 10 comments
Milestone

Comments

@Rebulus
Copy link
Collaborator

Rebulus commented Jan 26, 2017

Хотелось бы отказаться от callback функции в описании DataProvider.
Например, это можно было бы сделать так:

<DataProvider model="user" params={..} component={MySuperView} />

или

<DataProvider model="user" params={..}>
    <MySuperView />
</DataProvider>

Второй вариант кажется не реализуем 😞

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

Похоже, что такое поведение возможно только если использовать что-то похожее, как здесь:
https://github.com/MicheleBertoli/react-data-provider

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

И примерно это будет выглядеть так:

const MySuperViewConsumer = Consumer(MySuperView);
<DataProvider model="user" params={..}>
    <MySuperViewConsumer />
</DataProvider>

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

Приблизительно так же работает Provider + Connect в redux.

@Rebulus Rebulus added this to the 2.0 milestone Mar 23, 2017
@vitkarpov
Copy link
Member

Ну да, вот такой вариант #90 (comment) кажется нормальным.

А в чем глобальная проблема колбека? Больше кода?

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

  • Избавляет от необходимости что-то проверять внутри провайдера (если компонента нет, то реакт сам свалит ошибку)
  • позволяет взять данные из окружения, где провайдер с консьюмер нодой были инциализированы.

@vitkarpov
Copy link
Member

позволяет взять данные из окружения, где провайдер с консьюмер нодой были инциализированы.

пояснишь вот это?

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

Например,

const mySpecialData = {...};
const MySuperViewConsumer = Consumer(MySuperView);
<DataProvider model="user" params={..}>
    <MySuperViewConsumer data={mySpecialData}/>
</DataProvider>

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

@vitkarpov добавил пример)

@vitkarpov
Copy link
Member

Хм, а в чем отличие от колбека в этом смысле?

const mySpecialData = {...};
<DataProvider model="user" params={...}>
{() => {
  return <MyView data={mySpecialData}>
}}
</DataProvider>

@Rebulus
Copy link
Collaborator Author

Rebulus commented Mar 23, 2017

Ничем, похоже. Правда callback ломает консинстентность - в children оказывается не компонент.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants