首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试剂,UIkit下拉使用

试剂,UIkit下拉使用
EN

Stack Overflow用户
提问于 2018-09-09 00:24:37
回答 2查看 283关注 0票数 1

我正在尝试使用UIkit下拉菜单,但使用的是javascript,而不是uk-dropdown="target: #my-id"属性

代码语言:javascript
运行
复制
(defn uk-drop []
   [:div 
     [:div#my-id {:data-uk-dropdown true} "Some content"]
     [:button 
          {:on-click #(.show (.dropdown js/UIkit "#my-id"))} 
          "Open"]
     [:button 
          {:on-click #(.hide (.dropdown js/UIkit "#my-id"))} 
          "Close"])

不幸的是,这只起作用一次。所以它显示了下拉列表,然后隐藏了它(或者可能只有单击关闭了它,而不是方法),但它不会再次打开它。如果我在Chrome控制台上用UIkit.dropdown("#category1").show()尝试它,它会再次工作,但不是从Reagent on-click处理程序。任何帮助都是非常感谢的。

我在评论后尝试的另一个版本是:

代码语言:javascript
运行
复制
(defn uk-drop []
    (let [the-drop (atom nil)] 
    (fn [] 
     [:div
      [:div#my-id {:data-uk-dropdown true} "Some content"
      [:button
       {:on-click #(reset! the-drop (.dropdown js/UIkit "#my-id"))}
       "Make dropdown"]
      [:button
       {:on-click #(.show @the-drop)}
       "Open"]
      [:button
       {:on-click #(.hide @the-drop)}
       "Close"]]])))
EN

回答 2

Stack Overflow用户

发布于 2018-09-11 14:03:40

代码语言:javascript
运行
复制
(defn uk-drop []
  (let [the-drop (atom nil)]
    (reagent/create-class
     :component-did-mount (fn [this]
                            (reset! the-drop (.dropdown js/UIkit "#my-id")))
     :reagent-render
      (fn []
        [:div
          [:div#my-id {:data-uk-dropdown true} "Some content"]
          [:button {:on-click #(.show @the-drop)} "Open"]
          [:button {:on-click #(.hide @the-drop)} "Close"]]))))

我还没有尝试过,但是你可能只需要在组件挂载后创建一次dropdown对象,所以你需要试剂形式-3组件,它允许你使用react生命周期钩子。我不熟悉UIkit,所以这只是一个猜测。

票数 1
EN

Stack Overflow用户

发布于 2018-09-09 00:45:20

如果JS调用中存在有状态的东西,那么获取调用(.dropdown js/UIkit ...)的结果,将其存储为应用程序状态的一部分,并将其传递到组件中可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52237173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档