【发布时间】:2016-03-08 21:58:15
【问题描述】:
我正在尝试将数据从原生 iOS 应用程序传输到在 UIWebView 中运行的 React(不是 react-native)网络应用程序。
我从原生 viewcontroller 得到一个字符串,需要将它“注入”到 React 组件类中 <input> 元素的值中。我给元素一个id,就像这样:
render() {
<div>
...
<input id="iccid" type="text" name="iccid" pattern="\d*" onChange={this.iccidChanged.bind(this)} autoFocus />
...
</div>
}
然后使用 iOS 中的 JavaScriptCore(Swift 代码)运行:
self.context = self.webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as? JSContext
self.context!.evaluateScript("document.getElementById('iccid').value='\(barcodeValue)';")
这似乎工作正常,我可以在 webview 内的 DOM 中看到更新的值,问题是我的 React onChange 函数(验证值并更改组件状态)没有触发因为 React 不会将此解释为更改(可能是因为 DOM 与虚拟 DOM 处理)。
从 iOS 更新元素值并让 React 组件表现得像用户输入它的正确方法/最佳实践是什么?
【问题讨论】:
标签: javascript ios swift uiwebview reactjs