数据源 属性 未从试剂传播到 React Native ListView 组件的呈现方法
The data-source property isn't propagated from reagent to the render method of the React Native ListView component
我正在尝试在试剂中呈现 React Native ListView。
我有以下片段:
(def data-source
(React.ListView.DataSource. #js{:rowHasChanged (fn [a b] false)}))
(defn render-row []
[ui/view])
(def rows
(clj->js ["whoa", "hey"]))
(defn main-scene []
(fn []
[ui/list-view {:render-row render-row
:data-source (.cloneWithRows data-source rows)}]))
以上导致 "Failed propType: Required prop dataSource
was not specified in ListView
. Check the render method of app.ios.ui.main_scene
." 之后是 "Cannot read property 'rowIdentities' of undefined",因为数据源在 ListView 的渲染方法中未定义。
我的第一个猜测是在 reagent/hiccup 或其他什么的内部某处对 "data-" 属性进行了一些特殊处理,但我找不到任何线索来说明为什么 属性 未正确传播。
而且,是的,(.cloneWithRows data-source rows)
实际上 returns 一个有效的 ListViewDataSource 对象实例。
然后如果我将 :data-source
作为 :dataSource
传递,我得到的只是一个令人费解的 "StaticRenderer.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object."
我正在使用 react-native 0.18.1
和 reagent 0.5.1
以及 re-frame 0.6.0
。我用 reagent 0.6.0-alpha
和 re-frame 0.7.0-alpha
检查了这个,得到了同样的错误。
我已经研究了好几个小时了,我想我需要一些帮助。任何 hints/ideas 尝试解决这个问题,代码中的任何参考资料要看?提前致谢。
首先,数据源应该作为 :dataSource
而不是 :data-source
传递给视图。后者无论出于何种原因都不起作用。作为旁注,渲染行方法可以作为 :render-row
或 :renderRow
传递,并且它可以双向工作。呵呵
其次,render-row
函数应该 return 一个 React 组件而不是一个数组。如果数组稍后由试剂呈现,后者会没问题,但列表视图不会对从渲染行获取的数据进行任何类型的 post 处理,而只是尝试 return到 React,如果它是一个普通的 clojure 数组就可以了。
所以上面的render-row
函数应该写成:
(defn render-row []
(r/as-element [ui/view]))
然后一切正常。 :)
我正在尝试在试剂中呈现 React Native ListView。
我有以下片段:
(def data-source
(React.ListView.DataSource. #js{:rowHasChanged (fn [a b] false)}))
(defn render-row []
[ui/view])
(def rows
(clj->js ["whoa", "hey"]))
(defn main-scene []
(fn []
[ui/list-view {:render-row render-row
:data-source (.cloneWithRows data-source rows)}]))
以上导致 "Failed propType: Required prop dataSource
was not specified in ListView
. Check the render method of app.ios.ui.main_scene
." 之后是 "Cannot read property 'rowIdentities' of undefined",因为数据源在 ListView 的渲染方法中未定义。
我的第一个猜测是在 reagent/hiccup 或其他什么的内部某处对 "data-" 属性进行了一些特殊处理,但我找不到任何线索来说明为什么 属性 未正确传播。
而且,是的,(.cloneWithRows data-source rows)
实际上 returns 一个有效的 ListViewDataSource 对象实例。
然后如果我将 :data-source
作为 :dataSource
传递,我得到的只是一个令人费解的 "StaticRenderer.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object."
我正在使用 react-native 0.18.1
和 reagent 0.5.1
以及 re-frame 0.6.0
。我用 reagent 0.6.0-alpha
和 re-frame 0.7.0-alpha
检查了这个,得到了同样的错误。
我已经研究了好几个小时了,我想我需要一些帮助。任何 hints/ideas 尝试解决这个问题,代码中的任何参考资料要看?提前致谢。
首先,数据源应该作为 :dataSource
而不是 :data-source
传递给视图。后者无论出于何种原因都不起作用。作为旁注,渲染行方法可以作为 :render-row
或 :renderRow
传递,并且它可以双向工作。呵呵
其次,render-row
函数应该 return 一个 React 组件而不是一个数组。如果数组稍后由试剂呈现,后者会没问题,但列表视图不会对从渲染行获取的数据进行任何类型的 post 处理,而只是尝试 return到 React,如果它是一个普通的 clojure 数组就可以了。
所以上面的render-row
函数应该写成:
(defn render-row []
(r/as-element [ui/view]))
然后一切正常。 :)