Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 数据源属性为';t从试剂传播到React Native ListView组件的呈现方法_React Native_Clojurescript_Reagent_Hiccup_Re Frame - Fatal编程技术网

React native 数据源属性为';t从试剂传播到React Native ListView组件的呈现方法

React native 数据源属性为';t从试剂传播到React Native ListView组件的呈现方法,react-native,clojurescript,reagent,hiccup,re-frame,React Native,Clojurescript,Reagent,Hiccup,Re Frame,我正在尝试在试剂中呈现React本机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 {:ren

我正在尝试在试剂中呈现React本机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
未在
ListView
中指定。请检查
app.ios.ui.main\u scene
的渲染方法,然后是“无法读取未定义的属性'RowIdentifies'”,因为数据源在ListView的渲染方法中未定义

我的第一个猜测是在试剂/呃逆或其他东西的内部某处对“数据-”属性进行了一些特殊处理,但我找不到一条线索来解释为什么该属性没有正确传播

是的,
(.cloneWithRows数据源行)
实际上返回一个有效的ListViewDataSource对象实例

然后,如果我将
:data source
作为
:dataSource
传递,我得到的只是一个令人费解的“StaticRenderer.render():必须返回一个有效的组件。您可能返回了未定义的、数组或其他一些无效对象。”

我正在使用
react native 0.18.1
试剂0.5.1
re frame 0.6.0
。我已经用
试剂0.6.0-alpha
重新帧0.7.0-alpha
检查了这一点,得到了相同的错误


我已经挖了好几个小时了,我想我需要一些帮助。是否有任何提示/想法尝试修复此问题,代码中是否有任何参考?非常感谢。

首先,数据源应该作为
:dataSource
而不是
:dataSource
传递给视图。不管什么原因,后者都不起作用。作为旁注,render row方法可以作为
:render row
:renderRow
传递,并且它可以双向工作。呵呵

其次,
render row
函数应该返回React组件,而不是数组。如果数组稍后由试剂渲染,则后者也可以,但listview不会对从渲染行获取的数据进行任何类型的后处理,而只是尝试返回该数据以进行反应,如果它是一个普通clojure数组,则会退出

因此,上述
渲染行
函数应编写为:

(defn render-row []
  (r/as-element [ui/view]))
然后一切都会好起来