![](/img/trans.png)
[英]LocalStorage doesn't display the data after submit and state doesn't persist on refresh
[英]LocalStorage doesn't persist the data after page refresh
我的 React 表單中的 localStorage 的 getItem 有問題。 我放了一個 onChange 屬性:
<div className = 'InputForm' onChange={save_data}>
我找到了 setItem 函數來存儲數據。這是函數:
function save_data(){
let textarea = document.querySelectorAll("textarea")
let input = document.querySelectorAll("input[type='text']")
let saved_fields = []
textarea.forEach(x => {
saved_fields.push({
key: x.className,
value: x.value
})
})
input.forEach(x => {
saved_fields.push({
key: x.className,
value: x.value
})
})
localStorage.setItem("saved_data", JSON.stringify(saved_fields))
}
我的主要問題是在頁面重新加載后我找不到將數據放回頁面的方法。 我剛剛發現如何在控制台中保留我的所有輸入:
window.onload = dataLoad();
function dataLoad () {
let show_saved_data = localStorage.getItem("saved_data");
console.log('show_saved_data:',JSON.parse(show_saved_data));
}
你們能幫我找到檢索/保留數據功能嗎?
編輯:這是表單的 html,我使用來自另一個組件的道具。 我不知道這是否可以改變我需要使用的功能。
<InputFields
stateKey = 'contactInfo'
key = {props.contactInfo.id}
completedFields = {props.contactInfo}
templateFields = {props.templates.contactInfo}
onDataEntry = {props.onDataEntry}
newField = {props.newField}
/>
我們可以提供您的 HTML 表單來幫助您嗎? 您不應該通過它們的類名來識別您的輸入/文本區域。
之后,通過使用 ID 作為輸入/文本區域的標識符,您只需反向執行:
function dataLoad () {
var show_saved_data = localStorage.getItem("saved_data");
var inputList = JSON.parse(show_saved_data);
inputList.forEach(x => {
document.getElementById(x.key).setAttribute('value', x.value);
})
}
給我們您完整的 HTML/JS 將更容易為您提供完整的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.