【发布时间】:2017-11-15 17:30:14
【问题描述】:
当我编写我的 React 应用程序时,我将所有状态、道具计算保存在单独的函数中。我称它们为选择器,但我不确定它们是否是选择器。根据定义,选择器是返回状态或道具子集的函数。我有几个关于这个问题的问题:
1) 选择器可以返回 jsx 对象吗?
例如,我想将<Item /> 填充到另一个组件中
selectorItem = (state, props) => {
const { items } = props;
const ItemsJSX = items.map((item) => {
return (
<Item
item={item}
key={item.id}
/>
)
});
return {
items: ItemsJSX
}
}
class Page extends Component {
render() {
return (
<List
{...selectorItem(this.state, this.props)}
/>
)
}
}
这是一个有效的选择器吗? 如果没有,如何使用选择器将 JSX 填充到另一个组件中?
2) 我应该为每个组件编写选择器(选择器返回具有多个道具的对象)还是每个道具(每个道具单独的选择器)?
selectorItemsComments = (state, props) => {
const { items } = props;
const { comments } = props;
const ItemsJSX = items.map((item) => {
return (
<Item
item={item}
key={item.id}
/>
)
});
const CommentsJSX = comments.map((comment) => {
<Comment
comment={comment}
key={comment.id}
/>
});
return {
items: ItemsJSX,
comment: CommentsJSX
}
}
对
selectorItems = (state, props) => {
const { items } = props;
const ItemsJSX = items.map((item) => {
return (
<Item
item={item}
key={item.id}
/>
)
});
return {
items: ItemsJSX
}
}
selectorComments = (state, props) => {
const { comments } = props;
const CommentsJSX = comments.map((comment) => {
return (
<Comment
comment={comment}
key={comment.id}
/>
)
});
return {
comment: CommentsJSX
}
}
谢谢
【问题讨论】:
-
从技术上讲,您所说的“选择器”只是组件。
标签: reactjs