pass data from child component to another child component via parent component in react
我正在学习反应并被困在一个问题上。我有 3 个组件,TransactionsDetails、TransactionForm 和 TransactionsTable。
1
2 3 |
TransactionsDetails
TransactionForm TransactionsTable |
记录保存在 TransactionsDetails 的 state.records 中,并显示在 TransactionsTable 中。我正在尝试添加、编辑、更新、删除记录。我已经成功添加了添加和删除功能,但我一直在编辑和更新。因此,在表格行中,我为每一行设置了编辑和删除按钮。单击编辑时,应在表单中加载记录数据,单击保存/提交时,应更新记录。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
var TransactionForm = React.createClass({
getInitialState: function(){ return { date: ”, amount: ” }; }, handleChange: function(e){ handleSubmit: function(e){ render: function(){ var TransactionRow = React.createClass({ handleEdit: function(e){ render: function(){ var TransactionsTable = React.createClass({ var TransactionsDetails = React.createClass({ addRecord: function(record){ deleteRecord: function(record){ editRecord: function(record){ render: function(){ |
- 那么你被困在哪里了?你期望会发生什么?目前正在发生什么?
- 不确定是否有人向您提到过,但为了让这种事情变得更容易 Facebook(以及许多其他使用 React 的人)使用某种 Flux 实现来尝试优雅地解决这个问题。
- @BenHare 感谢您的提示。我是 React 的新手。无论如何,当我得到这个工作时,我会尝试以”通量”的方式来做。顺便说一句,您能否指出以正确方式解决上述问题的任何链接?谢谢。
- @gravityplanx 目前,当我单击编辑按钮时,记录(要编辑)被传递给 TransactionsDetails 中定义的 editRecord 函数。从那里,它需要被加载到 TransactionForm 中并且应该能够被更新。
- 这是 Facebook 对 Flux 是什么以及他们为什么使用它的解释,应该是一个好的开始:facebook.github.io/flux/docs/overview.html
为了尊重您的代码风格和原创性,我根据您的代码进行编辑、删除和添加记录工作,修改较少
捕获
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
var TransactionForm = React.createClass({
getInitialState: function(){ return { date: ”, amount: ” }; }, handleChange: function(e){ componentWillReceiveProps: function(nextProps) { handleSubmit: function(e){ render: function(){ TransactionForm.defaultProps = { var TransactionRow = React.createClass({ var TransactionsTable = React.createClass({ var TransactionsDetails = React.createClass({ addRecord: function(record){ deleteRecord: function(index){ updateRecord: function(index, record){ editRecord: function (index, record) { render: function(){ |
为了使这个工作我引入 “index” 能够识别要删除或更新的记录,以及详细信息组件状态上的 recordToEdit
来源:https://www.codenong.com/37621890/