Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何在输入文件标签中重新分配保存的文件_Html_Reactjs - Fatal编程技术网

Html 如何在输入文件标签中重新分配保存的文件

Html 如何在输入文件标签中重新分配保存的文件,html,reactjs,Html,Reactjs,在react组件中,我有以下类型的代码: state = { title: '', file: '' } handleTextChange = (e) => { this.setState({ [e.target.id] : e.target.value }) } handleFileChange = (e) => { this.setState({ [e.target.id] : e.target.file

在react组件中,我有以下类型的代码:

state = {
    title: '',
    file: ''
}

handleTextChange = (e) => {
    this.setState({
        [e.target.id] : e.target.value
    })
}

handleFileChange = (e) => {
    this.setState({
        [e.target.id] : e.target.files[0]
    })
}

render(){
    return(
        <input type="text" id="title" defaultValue={title} onBlur={this.handleTextChange}/>
        <input type="file" id="file" onChange={this.handleFileChange}/>
    )
}
状态={
标题:“”,
文件:“”
}
handleTextChange=(e)=>{
这是我的国家({
[e.target.id]:e.target.value
})
}
handleFileChange=(e)=>{
这是我的国家({
[e.target.id]:e.target.files[0]
})
}
render(){
返回(
)
}
现在的问题是,当我更改文本时,所选文件会自动取消选择,我必须再次选择它。每次我更改文本框中的文本时,我都必须这样做


如何将文件中的默认值设置为与文本框中相同的值,以便每次不必选择相同的文件。

您必须考虑此处的不变性。你的状态是一个对象。所以每次设置状态时,只应更改,只更改属性

state = {
    title: '',
    file: ''
}

handleTextChange = (e) => {
    this.setState({
        ...state,
        [e.target.id] : e.target.value
    })
}

handleFileChange = (e) => {
    this.setState({
        ...state,
        [e.target.id] : e.target.files[0]
    })
}

render(){
    return(
        <input type="text" id="title" defaultValue={title} onBlur={this.handleTextChange}/>
        <input type="file" id="file" onChange={this.handleFileChange}/>
    )
}
状态={
标题:“”,
文件:“”
}
handleTextChange=(e)=>{
这是我的国家({
……国家,
[e.target.id]:e.target.value
})
}
handleFileChange=(e)=>{
这是我的国家({
……国家,
[e.target.id]:e.target.files[0]
})
}
render(){
返回(
)
}

您必须关注这里的不变性。你的状态是一个对象。所以每次设置状态时,只应更改,只更改属性

state = {
    title: '',
    file: ''
}

handleTextChange = (e) => {
    this.setState({
        ...state,
        [e.target.id] : e.target.value
    })
}

handleFileChange = (e) => {
    this.setState({
        ...state,
        [e.target.id] : e.target.files[0]
    })
}

render(){
    return(
        <input type="text" id="title" defaultValue={title} onBlur={this.handleTextChange}/>
        <input type="file" id="file" onChange={this.handleFileChange}/>
    )
}
状态={
标题:“”,
文件:“”
}
handleTextChange=(e)=>{
这是我的国家({
……国家,
[e.target.id]:e.target.value
})
}
handleFileChange=(e)=>{
这是我的国家({
……国家,
[e.target.id]:e.target.files[0]
})
}
render(){
返回(
)
}