javascript - 如何更改表格数据以响应模式中的按钮
问题描述
嗨,我的反应组件有问题。我不知道如何从所有元素的共享模式更新表中的元素。在我的真实情况下,我有学生时间表,我必须编辑带有主题的列。在我点击表格中的主题后,模式应该打开,并且在我选择了我想输入的主题之后,它应该会改变。我在 codeblox 上准备了基本的情况模型。请问我应该如何通过此模式访问特定列并使用按钮值更新该列。谢谢帮助
这是我在 codeblox 上的示例:
这是链接:https ://codesandbox.io/s/quizzical-butterfly-g8dr1 重要提示:您必须删除 Todo 组件中的 BUTTON 并将其粘贴回来.. idk 为什么但另一方面它不起作用。 !!!我无法运行引导程序,但这并不重要
import ReactDOM from "react-dom";
import React, { Component } from "react";
import Modal from "react-bootstrap/Modal";
import Button from "react-bootstrap/Button";
export default class Col extends Component {
render() {
return <div>{this.props.data}</div>;
}
}
class Todo extends Component {
constructor(props) {
super(props);
this.state = {
items: [
{ Firstname: "Jill", Lastname: "Bill", Age: 18 },
{ Firstname: "Jill2", Lastname: "Bill2", Age: 180 },
{ Firstname: "Jill3", Lastname: "Bill3", Age: 1 }
],
modal: false
};
}
renderColumn() {
return this.state.items.map(i => (
<tr>
<td>
<Col data={i.Firstname} />
</td>
<td>
<Col data={i.Lastname} />
</td>
<td>
<Col data={i.Age} />
</td>
</tr>
));
}
render() {
return (
<div>
<table>
<thead />
<tbody>{this.renderColumn()}</tbody>
</table>
<Button
variant="primary"
onClick={() => this.setState({ modal: true })}
>
Launch vertically centered modal
</Button>
<p>------------------------------------------------------</p>
<MyModal
show={this.state.modal}
onHide={() => this.setState({ modal: true })}
/>
</div>
);
}
}
export class MyModal extends Component {
render() {
return (
<Modal.Dialog>
<Modal.Header closeButton>
<Modal.Title>Modal title</Modal.Title>
</Modal.Header>
<Modal.Body>
<p>Modal body text goes here.</p>
</Modal.Body>
<Modal.Footer>
<Button variant="secondary">Mark</Button>
<Button variant="primary">Joseph</Button>
</Modal.Footer>
</Modal.Dialog>
);
}
}
ReactDOM.render(<Todo />, document.getElementById("root"));
真实情况是这样的: 模态的
那些蓝色按钮是主题。在我单击时间表中的一个按钮后-> 模式将打开,在我选择一个后-> 时间表中的值应该改变
解决方案
这种情况可能适合您:
- 添加
selectedStudent: null,
到Todo
组件状态 - 删除具有文本“启动垂直居中模式”的按钮
- 为每行学生添加新按钮。将其命名为“选择”
- 向 Todo 组件添加新方法,例如
selectStudent
,它将有一个参数 - 学生对象。此方法也可能setState
与回调一起使用。回调将打开模式(通过更改 statemodal: true
)。当您单击“选择”按钮时,将触发此方法 - 将新道具传递给模态:
selectedStudent
哪个值将是this.state.selectedStudent
- 当模态关闭时 -再次设置
selectedStudent
为null
如果这里看起来有些混乱或者您需要进一步的解释,请询问
注意,您也可以从状态中删除键并仅在对象modal
时有条件地呈现模态。selectedStudent
何时- 模selectedStudent
态null
应该关闭。
推荐阅读
- batch-file - 如何从詹金斯控制台在 Windows 从代理中执行 Windows 批处理文件
- http - Gitlab 管道触发器不适用于主分支 [状态代码:400]
- javascript - PWA - Vue - WP Rest Api
- git - 如何使用另一个用户凭据撤消对 GitHub 的意外推送
- python - 如何从数据框中删除一个字典
- javascript - 选择选项属性返回未定义的 JQuery
- jspdf - 使用 html2Canvas 将 html 转换为 pdf 时,Textnode 被裁剪
- canvas - 将 html 元素放在 Canvas 中的确切位置
- html - 卡在负责任的弹性盒子上
- html - 当我调整浏览器大小时,我的 html 页面上的元素会移动