Как я могу передать функцию, которая возвращает компонент в качестве реквизита? - PullRequest
0 голосов
/ 30 июня 2018

Мне нужно создать карусель из моего пользовательского элемента списка, и я уже импортировал в проект один из компонентов карусельного компонента lib (react-native-snap-carousel), но компоненту карусели нужны реквизиты того возвращаемого компонента, который нам нужен сделать как карусель itemList. поэтому я отправляю реквизит вот так

[carousel {:render-item (fn [] [my-custom-item]) 
               ...otherprops... }]

но это ошибка с этим сообщением

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

как я могу отправить реквизиты как функцию, возвращающую элемент?

это как вызвать компонент карусели на js

        <Carousel
          ref={(c) => { this._carousel = c; }}
          data={this.state.entries}
          renderItem={this._renderItem}
          sliderWidth={sliderWidth}
          itemWidth={itemWidth}
        />

1 Ответ

0 голосов
/ 25 июля 2018

Компонент Carousel ожидает, что реагирующий элемент или строка будут возвращены из функции render-item. Но вы возвращаете простой компонент реагента.

Вам необходимо использовать функцию реагента as-element , чтобы преобразовать компонент реагента в компонент реакции:

[carousel {:render-item (fn [] (reagent/as-element [my-custom-item])) 
           ...otherprops... }]
...