From f998d6064e48332a8eea9c503d3b9d2983e372f2 Mon Sep 17 00:00:00 2001 From: hiddaorear Date: Tue, 7 Feb 2017 23:34:46 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=96=91=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index ac17062..f0ebfde 100644 --- a/README.md +++ b/README.md @@ -231,3 +231,7 @@ [react-optimize]: https://github.com/thejameskyle/babel-react-optimize [history]: https://github.com/ReactTraining/history [proptypes]: https://facebook.github.io/react/docs/reusable-components-zh-CN.html#prop-验证 + +### 疑问 + +#### super与context的使用 From 9249d7a4b08544e9e7f876047d951588b2b8c5d2 Mon Sep 17 00:00:00 2001 From: Yifeng Wang Date: Wed, 8 Feb 2017 18:07:49 +0800 Subject: [PATCH 2/4] update --- README.md | 3 ++- src/components/App.js | 2 +- src/components/Msg/MsgForm/index.js | 3 +++ src/components/Navbar/LoginForm.js | 4 ++-- src/components/Navbar/index.js | 4 +++- src/utils/mixins/handleChange.js | 2 ++ 6 files changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f0ebfde..c50fb1d 100644 --- a/README.md +++ b/README.md @@ -234,4 +234,5 @@ ### 疑问 -#### super与context的使用 +#### super与context的使用时,this的指向。 +#### `import userService from 'SERVICE/userService'`路径大写的出于什么考虑?(路径别名,引入与重构很方便) diff --git a/src/components/App.js b/src/components/App.js index c82bfc1..bb9b032 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -4,7 +4,7 @@ import Navbar from 'COMPONENT/Navbar/' let DevTools if (__DEV__ && __COMPONENT_DEVTOOLS__) { // 组件形式的 Redux DevTools - DevTools = require('COMPONENT/DevTools').default + DevTools = require('COMPONENT/DevTools').default // 为什么不同意使用import? } const App = ({ children, location }) => ( diff --git a/src/components/Msg/MsgForm/index.js b/src/components/Msg/MsgForm/index.js index 7565cd9..798daad 100644 --- a/src/components/Msg/MsgForm/index.js +++ b/src/components/Msg/MsgForm/index.js @@ -5,6 +5,7 @@ import tpl from './msg-form.jsx' // 分拆写 JSX 模板以减少单文件代码 /* 为什么不直接 const initState = { ... } 而是用函数返回呢? 皆因直接传 initState 仅是传引用,initState 本身可被修改 */ + // Small Fish Wang: 初始化代码放在外面,别具一格。在redux/store 也有初始化代码。 const getInitState = () => ({ id: '', title: '', content: '' }) /* 由于本组件由 /msg/add 与 /msg/:msgId 所公用 @@ -59,6 +60,8 @@ export default class MsgForm extends Component { // 情况3:强制刷新 /msg/detail/:msgId 后,跳转到 /msg/modify/:msgId // 此时 state 中 msgs 为空,需要立即从后端 API 获取 + // Small Fish Wang: 直接使用ajax拿数据,没有使用redux,失去统一管理的好处。但这里使用redux,不方便实现add与modify公用。我试试看。 + msgService.fetch({ msgId }).then(msg => { let { id, title, content, author } = msg if (!msg || author !== username) { diff --git a/src/components/Navbar/LoginForm.js b/src/components/Navbar/LoginForm.js index d6256c0..700edc2 100644 --- a/src/components/Navbar/LoginForm.js +++ b/src/components/Navbar/LoginForm.js @@ -9,7 +9,7 @@ export default class LoginForm extends Component { // 只能使用 this.setState({ XXX: XXX }) this.state = { username: '' } - this.handleChange = handleChange.bind(this) // mixin + } handleSubmit () { @@ -40,7 +40,7 @@ export default class LoginForm extends Component { placeholder="请输入您的用户名" required value={this.state.username} - onChange={this.handleChange} /> + onChange={this::handleChange} />