javascript - 从数据库添加项目到列表并在提交后清除输入
问题描述
我有一个简单的列表,我从 DB 获得并使用.map()
. 我想在这个列表中添加更多项目并在之后清除输入,这样我就可以发回带有新项目的“旧列表”。我怎样才能做到这一点?哪个是最佳实践?这是一个愚蠢的问题,所以我很抱歉。
this.state = {
newRules: {
rules: [],
rulesTerm: ''
}
};
handleInput = e => {
let value = e.target.value;
let name = e.target.name;
console.log(value);
console.log(name);
this.setState(prevState => ({
newRules: {
...prevState.newRules,
[name]: value
}
}));
};
addRule = () => {
e.preventDefault();
let rules = this.state.field.rules;
let newRules = this.state.newRules.rules
rules.push(newRules)
console.log(rules)
this.setState({
newRules: {
rules: rules
}
}
};
<ul>
{this.state.db.rules.map(rule => {
// this.state.db.rules is data from DB
return <li key={rule}>{rule}</li>;
})}
{this.state.editMode ? (
<form onSubmit={this.addRule}>
<Input
type="text"
placeholder="regras"
name="rules"
onChange={this.handleRules}
value={this.state.newRule}
/>
<button type="submit">Adicionar +</button>
</form>
) : null}
</ul>;
谢谢!:)
解决方案
方法 1:连接
var array1 = ['a', 'b', 'c'];
var array2 = ['d', 'e', 'f'];
console.log(array1.concat(array2));
// expected output: Array ["a", "b", "c", "d", "e", "f"]
方法2:拼接
var months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at 1st index position
console.log(months);
// expected output: Array ['Jan', 'Feb', 'March', 'April', 'June']
推荐阅读
- python - 在 repl.it 上保持 Discord Bot 在线
- python - 我怎样才能创建一个动作将与我的主要动作同时发生一段时间?
- c# - Identity signIn / PasswordSignIn 返回成功,但 @User.Identity.IsAuthenticated 返回 false
- python - 使用python在树结构中递归调用函数
- java - 如何从 GeneXus 调用包过程和函数
- sql - 在 For Each 循环容器内的不同点使用参数
- angular - 从 Angular HttpClient 调用 Async 方法 azure AI 计算机视觉获取响应标头
- c# - 如何用我的名字声明一个字符串变量+将我的出生月份添加为数字?
- javascript - 防止不要直接改变状态。使用 setState()
- javascript - 尝试从 json 转换为 xml 时抛出错误“超出最大调用堆栈大小”