Javascript 如何从Clojurescript修补React模块

Javascript 如何从Clojurescript修补React模块,javascript,clojurescript,monkeypatching,Javascript,Clojurescript,Monkeypatching,我在ClojureScript项目中使用了react select,但有一个硬编码字符串需要翻译(请参见): 我将发送一个PR以使此字符串可配置,但在此期间我有一个问题 如果我从JS控制台检查我的应用程序,我可以键入: > window.deps["react-select"]["Creatable"].promptTextCreator 哪张照片 ƒ c(e){return'Create option "'+e+'"'} 现在在我的cljs项目中,我尝试了以下方法: (set! (.

我在ClojureScript项目中使用了
react select
,但有一个硬编码字符串需要翻译(请参见):

我将发送一个PR以使此字符串可配置,但在此期间我有一个问题

如果我从JS控制台检查我的应用程序,我可以键入:

> window.deps["react-select"]["Creatable"].promptTextCreator
哪张照片

ƒ c(e){return'Create option "'+e+'"'}
现在在我的cljs项目中,我尝试了以下方法:

(set! (.-promptTextCreator Creatable) #(str "TESTING " % "!"))
有趣的是,我可以看到应用程序中的变化,因为:

> window.deps["react-select"]["Creatable"].promptTextCreator
现在打印

ƒ (p1__44104_SHARP_){
    return [cljs.core.str("TESTING "),cljs.core.str(p1__44104_SHARP_),cljs.core.str("!")].join('');
}
问题:我的应用程序仍然显示旧的未更改字符串。我还尝试使用以下名称命名新函数:

(set! (.-promptTextCreator Creatable) (fn c [e] (str "TESTING " e "!")))

现在打印:

ƒ club$views$c(e){
    return [cljs.core.str("TESTING "),cljs.core.str(e),cljs.core.str("!")].join('');
}
但运气不好:应用程序中会显示旧的未翻译字符串


有什么想法吗?

promptextcreator是一个属性,您可以传入自定义函数。为什么需要猴子补丁?

的确如此。几天后我发现了这一点。但你不回答我的问题!谢谢你的帮助。
> window.deps["react-select"]["Creatable"].promptTextCreator
ƒ club$views$c(e){
    return [cljs.core.str("TESTING "),cljs.core.str(e),cljs.core.str("!")].join('');
}