Как заставить CKEditor реагировать на компонент, используемый в ClojureScript - PullRequest
0 голосов
/ 24 февраля 2020

Я не могу заставить компонент CKEditor реагировать на работу в проекте ClojureScript.

Когда я пытаюсь использовать компонент

(ns simple.core
  (:require [reagent.core :as reagent]
            [re-frame.core :as rf]
            [clojure.string :as str]
            [simple.routes :as routes]
            ["ckeditor4-react" :as ck :default CKEditor]
            ))

...

    [:> CKEditor]

, я получаю

    template.cljs:312 Uncaught Error: Assert failed: Expected React component in: [:> nil]
 (in simple.core.ui)
(or (string? comp) (fn? comp))
    at Object.reagent$impl$template$vec_to_elem [as vec_to_elem] (template.cljs:312)
    at Object.reagent$impl$template$as_element [as as_element] (template.cljs:329)
    at template.cljs:403
    at core.cljs:5598
    at core.cljs:5598
    at Object.cljs$core$IKVReduce$_kv_reduce$arity$3 (core.cljs:5602)
    at Object.cljs$core$_kv_reduce [as _kv_reduce] (core.cljs:700)
    at Object.cljs$core$reduce_kv [as reduce_kv] (core.cljs:2543)
    at reagent$impl$template$make_element (template.cljs:401)
    at Object.reagent$impl$template$native_element [as native_element] (template.cljs:285)

У меня есть создал простой проект github для иллюстрации.

https://github.com/madhat2r/shadow-re-frame-simple-example

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

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 24 февраля 2020

Оказывается, это была проблема с :require, используя :default, который вы должны использовать

["ckeditor4-react" :as CKEditor]

...

[:> CKEditor {:onBeforeLoad (fn [ck] (set! (.-disableAutoInline ck) true))}]

Shadow-cl js: https://shadow-cljs.github.io/docs/UsersGuide.html#_about_default_exports

Примечание: функция onBeforeLoad выше исправляет ошибку в текущей версии. Оставьте это для тех, кто может столкнуться с этим. https://github.com/ckeditor/ckeditor4-react/issues/57

...