4 回答

TA貢獻1809條經驗 獲得超8個贊
首先,不可編輯的錯誤是由于在“defaultValue”內部的模態中使用“value”道具輸入的。如果你使用價值,你總是給它初始道具的價值。使用默認值。使用 defaultValue 使其成為受控組件。在此處閱讀有關 Stackoverflow 的更多信息。更改它并查看下一個問題(如果有)。
其次,確保避免使用 UNSAFE_componentWillReceiveProps()。查看您的 componentWillRecieveProps 方法,文檔中所說的可能在起作用:
“調用 this.setState() 通常不會觸發 UNSAFE_componentWillReceiveProps()。”
更新:
刪除 componentWillReceiveProps 方法。提交應該工作。并確保用戶經過身份驗證。

TA貢獻1765條經驗 獲得超5個贊
我已經弄清楚了
OnClick
edit
按鈕我傳遞了所有必需的數據。所以,我replaceModalItem()
將所有數據綁定在一起setState()
在
replaceModalItem
我調用這些數據并將其設置為setState()
.在
Edit.js
我已經調用了所有的state
值。
因此,在輸入字段中獲取所有必需的值,并將其設置為defaultValue

TA貢獻1805條經驗 獲得超9個贊
當用戶正在編輯他們的博客時,獲取他們的博客信息并創建一個像這樣的對象
userBlogData={
blog_heading: 'users blog heading',
blog_name: 'users blog name',
description: 'users blog description',
image_url: 'users blog image url',
}
根據這些對象更新模態表單。例如:
<input name="blog_heading" value={blog_heading} ... />
用戶編輯對象后,您可以在服務器上發出更新請求并同時調用 get 函數來更新博客。您可以在編輯組件上保留更新功能。但是 get 函數將作為道具傳遞。
希望這可以幫助
這應該給你的想法......................
// Edit Component
this.state = {
blog_name:this.props.data.blog_name
}
onBlogUpdate = () => {
let payload = this.state
API CALL...
}
...
render(){
return(
<input value={this.state.blog_name} name='blog_name' onChange={...} ... />
)
}

TA貢獻1836條經驗 獲得超3個贊
在我看來,您的onTodoChange
函數正在父Blogs
組件上設置狀態,但該狀態不會使其返回輸入值。相反,父級將一個blogs
道具傳遞給EditBlogs
,并且由于onTodoChange
從不影響blogs
,因此輸入value
保持不變。
這意味著您的輸入的onChange
事件值 ( e.target.value
) 永遠不會返回到輸入的value
屬性,因此輸入實際上不會更改值。
由于和中的blog_
值都是編輯表單的本地值,我建議將它們移至該級別..不需要了解這些內容,它會簡化事情 -將事件值設置為,這將正確流動回到輸入作為值。state
onTodoChange
Blogs
onTodoChange
state
你的blogs
道具應該只設置初始的state
.
添加回答
舉報