我们使用Backbone + ReactJS包来构建客户端应用程序.严重依赖臭名昭着的valueLink我们通过自己的包装器将值直接传播到模型,该包装器支持ReactJS接口以进行双向绑定.
现在我们遇到了这个问题:
我们有jquery.mask.js插件以编程方式格式化输入值,因此它不会触发React事件.所有这些都会导致模型从用户输入接收未格式化的值并从插件中忽略格式化的值时导致这种情况.
React似乎有很多依赖于浏览器的事件处理策略.是否有任何常见的方法来触发特定DOM元素的更改事件,以便React会听到它?
我有一个具有以下渲染效果的组件:
render: function() {
<input
type="file"
name: this.props.name,
className={this.props.className}
onChange={this.props.handleChange}
accept={this.props.accept}/>
}
Run Code Online (Sandbox Code Playgroud)
State由一个容器管理,该容器使用jquery AJAX调用上传文件服务器端:
getInitialState: function() {
return {
uploaded: false
};
}
handleChange: function(event) {
event.preventDefault();
var file = event.target.files[0];
if (!file) {
return;
}
var reader = new FileReader();
reader.readAsText(file, 'UTF-8');
var self = this;
reader.onload = function(e) {
var content = e.target.result;
var a = $.ajax({
type: 'PUT',
url: 'http://localhost:8080/upload',
contentType: 'application/json',
dataType: "json",
data: JSON.stringify({
"input": content
})
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("ERROR WHEN UPLOADING"); …Run Code Online (Sandbox Code Playgroud)