在 ReactJS 中将表单数据提交到 table
Submit formsdata into a table in ReactJS
抱歉这个新手问题,但我对 ReactJS 和 JavaScript 很陌生,我的问题是我试图在包含 [=18] 的 table 中提交我的输入字段中的值=]:练习、组、次数和说明。我的目标是当我点击“'Add exercise to workoutprogram'”时,值存储在 table 中,并且我可以在下面的新行中添加一些新值,但它不起作用,因为当我点击 add-button 页面刚刚刷新,值未存储在 table 中。
这是我的代码:
import React from 'react'
import './Trainerworkout.css'
import { useState } from 'react/cjs/react.development';
export default function Trainerworkout() {
const [workout, setWorkout] = useState([
{Exercise: "", Sets: "", Reps: "", Description: ""}
]
)
function handleChange(event) {
const value = event.target.value;
setWorkout({
...workout,
[event.target.name]: value
});
}
function handleSubmit(event) {
workout.push(`${workout.Exercise} ${workout.Sets} ${workout.Reps} ${workout.Description}`)
}
return (
<>
<h3>Add a workout program to a client</h3>
<form onSubmit={handleSubmit}>
<label>
Exercise:
<input type="text" name="Exercise" value={workout.Exercise || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<label>
Set:
<input type="text" name="Sets" value={workout.Sets || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<label>
Reps:
<input type="text" name="Reps" value={workout.Reps || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<label>
Description:
<input type="text" name="Description" value={workout.Description || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<button type="submit">Add exercise to workoutprogram</button>
</form>
<div className="table">
<table className="exerciseTable">
<thead>
<tr>
<th>Exercise</th>
<th>Set</th>
<th>Reps</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>{workout.Exercise}</td>
<td>{workout.Sets}</td>
<td>{workout.Reps}</td>
<td>{workout.Description}</td>
</tr>
</tbody>
</table>
</div>
</>
);
}
您需要另一种状态来存储您的数据(如果您刷新页面,数据将会消失)。试试这个:
import React, { useState } from 'react';
import './style.css';
export default function Trainerworkout() {
const [workout, setWorkout] = useState({
exercise: '',
sets: '',
reps: '',
description: '',
});
const [workoutData, setWorkoutData] = useState([]);
const handleChange = (e) => {
e.preventDefault();
setWorkout({
...workout,
[e.target.name]: e.target.value,
});
};
const handleSubmit = (e) => {
e.preventDefault();
setWorkoutData([...workoutData, workout]);
setWorkout('');
};
const { exercise, sets, reps, description } = workout;
return (
<>
<h3>Add a workout program to a client</h3>
<form onSubmit={handleSubmit}>
<label>
Exercise:
<input
type="text"
name="exercise"
placeholder="Exercice"
value={exercise || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<label>
Set:
<input
type="text"
name="sets"
placeholder="Sets"
value={sets || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<label>
Reps:
<input
type="text"
name="reps"
placeholder="Reps"
value={reps || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<label>
Description:
<input
type="text"
name="description"
placeholder="Description"
value={description || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<button type="submit">Add exercise to workoutprogram</button>
</form>
<div className="table">
<table className="exerciseTable">
<thead>
<tr>
<th>Exercise</th>
<th>Set</th>
<th>Reps</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{workoutData &&
workoutData.map((d, index) => (
<tr key={index}>
<td>{d.exercise}</td>
<td>{d.sets}</td>
<td>{d.reps}</td>
<td>{d.description}</td>
</tr>
))
}
</tbody>
</table>
</div>
</>
);
}
演示: Stackblitz
抱歉这个新手问题,但我对 ReactJS 和 JavaScript 很陌生,我的问题是我试图在包含 [=18] 的 table 中提交我的输入字段中的值=]:练习、组、次数和说明。我的目标是当我点击“'Add exercise to workoutprogram'”时,值存储在 table 中,并且我可以在下面的新行中添加一些新值,但它不起作用,因为当我点击 add-button 页面刚刚刷新,值未存储在 table 中。
这是我的代码:
import React from 'react'
import './Trainerworkout.css'
import { useState } from 'react/cjs/react.development';
export default function Trainerworkout() {
const [workout, setWorkout] = useState([
{Exercise: "", Sets: "", Reps: "", Description: ""}
]
)
function handleChange(event) {
const value = event.target.value;
setWorkout({
...workout,
[event.target.name]: value
});
}
function handleSubmit(event) {
workout.push(`${workout.Exercise} ${workout.Sets} ${workout.Reps} ${workout.Description}`)
}
return (
<>
<h3>Add a workout program to a client</h3>
<form onSubmit={handleSubmit}>
<label>
Exercise:
<input type="text" name="Exercise" value={workout.Exercise || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<label>
Set:
<input type="text" name="Sets" value={workout.Sets || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<label>
Reps:
<input type="text" name="Reps" value={workout.Reps || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<label>
Description:
<input type="text" name="Description" value={workout.Description || ''} onChange={handleChange}></input>
</label>
<br></br>
<br></br>
<button type="submit">Add exercise to workoutprogram</button>
</form>
<div className="table">
<table className="exerciseTable">
<thead>
<tr>
<th>Exercise</th>
<th>Set</th>
<th>Reps</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>{workout.Exercise}</td>
<td>{workout.Sets}</td>
<td>{workout.Reps}</td>
<td>{workout.Description}</td>
</tr>
</tbody>
</table>
</div>
</>
);
}
您需要另一种状态来存储您的数据(如果您刷新页面,数据将会消失)。试试这个:
import React, { useState } from 'react';
import './style.css';
export default function Trainerworkout() {
const [workout, setWorkout] = useState({
exercise: '',
sets: '',
reps: '',
description: '',
});
const [workoutData, setWorkoutData] = useState([]);
const handleChange = (e) => {
e.preventDefault();
setWorkout({
...workout,
[e.target.name]: e.target.value,
});
};
const handleSubmit = (e) => {
e.preventDefault();
setWorkoutData([...workoutData, workout]);
setWorkout('');
};
const { exercise, sets, reps, description } = workout;
return (
<>
<h3>Add a workout program to a client</h3>
<form onSubmit={handleSubmit}>
<label>
Exercise:
<input
type="text"
name="exercise"
placeholder="Exercice"
value={exercise || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<label>
Set:
<input
type="text"
name="sets"
placeholder="Sets"
value={sets || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<label>
Reps:
<input
type="text"
name="reps"
placeholder="Reps"
value={reps || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<label>
Description:
<input
type="text"
name="description"
placeholder="Description"
value={description || ''}
onChange={handleChange}
/>
</label>
<br></br>
<br></br>
<button type="submit">Add exercise to workoutprogram</button>
</form>
<div className="table">
<table className="exerciseTable">
<thead>
<tr>
<th>Exercise</th>
<th>Set</th>
<th>Reps</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{workoutData &&
workoutData.map((d, index) => (
<tr key={index}>
<td>{d.exercise}</td>
<td>{d.sets}</td>
<td>{d.reps}</td>
<td>{d.description}</td>
</tr>
))
}
</tbody>
</table>
</div>
</>
);
}
演示: Stackblitz