通信是发送者通过某种媒体以某种格式来传递信息到收信者以达致某个目的(摘至维基百科)。
前两天为了练习react,自己写了如下一个Demo,功能很简单,展示学生成绩列表,支持按性别和姓名筛选。效果如下:
从上面的效果图,我们也可以看到如下的组件树结构:
StudentScoreTable有三个子组件:GenderFilter, NameFilter, ScoreTable。其中,ScoreTable又包含若干个子组件ScoreItem。从功能上,我们知道:
- 当选择性别后,要对ScoreItem做筛选
- 当输入姓名后,要对ScoreItem做筛选
- 当同时选择性别,输入姓名,两个筛选条件对ScoreItem生效
- 点击某ScoreItem的删除按钮后,删除此ScoreItem
也就是说:
- 当GenderFilter发生改变(change)时,ScoreItem要能感知到这个变化并做出相应反馈(进行筛选)
- 当NameFilter发生改变时,ScoreItem也要能感知这个变化并做出相应反馈
- 当某ScoreItem删除后,可能StudentScoreTable, GenderFilter, NameFilter要做出相应反馈,即以后筛选,少了一个ScoreItem
下面是我的第一版本实现
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 165 166 167 168 169 170 171 172 173 174 |
// 测试数据 var _score = [ {name: '张三', gender: '男', chinese: 85, math: 98, _id:0}, {name: '张三', gender: '女', chinese: 95, math: 90, _id:1}, {name: '李四', gender: '男', chinese: 65, math: 48, _id:2}, {name: '大妹', gender: '女', chinese: 95, math: 100, _id:3}, {name: '王五', gender: '男', chinese: 75, math: 88, _id:4}, {name: '赵钱', gender: '男', chinese: 75, math: 98, _id:5}, {name: '二妹', gender: '女', chinese: 90, math"crayon-v">gender: '女', chinese: 90, math048g20ko0ng16v.gif">
从上面的效果图,我们也可以看到如下的组件树结构:
StudentScoreTable有三个子组件:GenderFilter, NameFilter, ScoreTable。其中,ScoreTable又包含若干个子组件ScoreItem。从功能上,我们知道:
也就是说:
下面是我的第一版本实现
|