Я следую учебнику Coding with kevins SQL, Node, Express и React JS на YouTube. https://thewikihow.com/video_rK6oTTbVbcY
Я нахожусь в учебнике, где я должен вводить данные в текстовое поле веб-страницы, и после нажатия кнопки «Отправить» данные будут отображаться в нижней части веб-страницы.
Всякий раз, когда я пытаюсь ввести имя и фамилию в соответствующее текстовое поле, оно не отображается внизу страницы.
вот мой код из моего App.js:
import './App.css';
импортировать React, {useState} из 'реагировать';
function App() {
const [employee, setEmployee] = useState({EmployeeID: 0, Firstname: '', Lastname: '', Age: 0, Gender: ''});
const [returnedData, setReturnedData] = useState([]);
const setInput = (e) => {
const {name, value} = e.target;
console.info(value);
if (name === 'EmployeeID' || name === 'Age') {
setEmployee(prevState => ({...prevState,
[name]: parseInt(name)
}) );
return;
}
setEmployee(prevState => ({
...prevState,
[name]: value
}));
}
const fetchData = async () => {
console.info(employee);
const newData = await fetch('/api', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
name: employee.Firstname
})
})
.then(res => res.json())
console.info(newData[0]);
}
return (
<div className = "App">
<input
type = "number"
name = "EmployeeID"
placeholder = "EmployeeID"
onChange = {setInput}>
</input>
<input
name = "Firstname"
placeholder = "Firstname"
onChange = {setInput}>
</input>
<input
name = "Lastname"
placeholder = "Lastname"
onChange = {setInput}>
</input>
<input
type = "number"
name = "Age"
placeholder = "Age"
onChange = {setInput}>
</input>
<input
name = "Gender"
placeholder = "Gender"
onChange = {setInput}>
</input>
<button onClick = {()=> fetchData()}>Clicky</button>
<button onClick = {()=> fetchData()}>Create</button>
<p>EmployeeID: {returnedData.EmployeeID}</p>
<p>Firstname: {returnedData.Firstname}</p>
<p>Lastname: {returnedData.Lastname}</p>
<p>Age: {returnedData.Age}</p>
<p>Gender: {returnedData.Gender}</p>
{returnedData}
{returnedData.name}
</div>
);
}
export default App;`enter code here`
И действительно ли проблема связана с SQL Server? Скорее всего проблема в коде...
В нижней части страницы вы пытаетесь отобразить содержимое returnedData
, тогда как setReturnedData
никогда не вызывается внутри кода. вы просто звоните setInput
, чтобы измениться employee
.
returnedData
все еще пустой массив []
.
Я считаю, что вы хотите вызвать setReturnedData
внутри fetchData
для обновления на основе вашего вызова API. Сделайте это, и он, вероятно, отобразит данные :)
Небольшой совет для StackOverflow: вместо того, чтобы делиться снимками экрана, рассмотрите возможность использования КодПесочница для создания редактируемого проекта с вашим кодом, который может быть легче читать и предоставлять вам решение.
Каков правильный синтаксис для вызова setReturnedData? Я новичок, чтобы реагировать, поэтому я просто не уверен, как реализовать это в моем коде.
setReturnedData — это функция для установки состояния returnData, может быть вызвана так, например, в вашей функции fetchData: setReturnedData(res.json())
Итак, как только я поместил setReturnedData() внутрь fetchData, какой синтаксис я поместил в функцию setReturnedData(), чтобы отобразить пару ключ-значение на странице внешнего интерфейса? Я могу извлекать данные из базы данных и отображать результат в строке консоли. Некоторые из предыдущих, которые я пробовал, это setReturnedData(newData.result) и setReturnedData(newData[0])
это зависит от содержимого ваших новых данных, как выглядит результат новых данных? console.info(newData) , содержимое returnData должно быть чем-то вроде {EmployeeID: 0, Firstname: '', Lastname: '', Age: 0, Gender: ''} , чтобы правильно отображаться во внешнем интерфейсе. Итак, посмотрите, где вы найдете этот тип объекта в результате выборки новых данных.
В соответствии с руководством по вопросам, пожалуйста, не публикуйте изображения кода, данных, сообщений об ошибках и т. д. - скопируйте или введите текст в вопрос. Пожалуйста, зарезервируйте использование изображений для диаграмм или демонстрации ошибок рендеринга, вещей, которые невозможно точно описать с помощью текста.