所以我在Vanilla React中有问题。
我在ready()
函数中有以下代码行:
var current = this;
React.createElement(
"iframe",
{id: "iframeController",
ref: "iframe",
src: "data:text/html;charset=utf-8," + escape(notification.description),
onLoad: current.iframeLoaded(this)}
)
notification.description来自我对this.state.notifications
中的对象所做的映射
及其遵循的功能
iframeLoaded(iframe) {
if(iframe) {
iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
}
}
但是,如果我在iframeLoaded中用console.log记录(iframe)元素,则它返回为null。如果我getElementById也是一样,只是没有定义。
我做了一个setTimeout,看看它是否是组件更新问题,事实证明是这样。因此,即使在Chrome中,onLoad也会在src有时间呈现之前触发。
我正在尝试获取高度,以便可以将其设置在窗口中,以便调整其大小并获取要获取的iframe的全部高度。
有人可以给我有关如何解决此问题的提示吗?
答案 0 :(得分:1)
我怀疑问题在于以下这一行: // Action where you want to show time picker
{
let datePicker = UIDatePicker()
datePicker.datePickerMode = .time
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone.autoupdatingCurrent
dateFormatter.timeStyle = DateFormatter.Style.short
}
// On Action of Datepicker value change or Done Outlet
{
let date = self.datePicker.date
let strTime = safeDate.dateStringWith(strFormat: "hh:mm a")
print(strTime)
}
// Extension of Date
extension Date {
func dateStringWith(strFormat: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = Calendar.current.timeZone
dateFormatter.locale = Calendar.current.locale
dateFormatter.dateFormat = strFormat
return dateFormatter.string(from: self)
}
}
。在这种情况下,onLoad: current.iframeLoaded(this)}
被设置为onLoad
的返回值。
我相信您想将值包装在函数中(不是箭头符号,而是传统函数):
current.iframeLoaded(this)