首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定制嵌套组件?

如何定制嵌套组件?
EN

Stack Overflow用户
提问于 2015-11-12 18:33:24
回答 1查看 153关注 0票数 0

如何定制嵌套组件?

我正在用Redux构建React Native应用程序。我的应用程序中有三个屏幕,用于呈现用户列表。

Follower/Follower应显示FollowButton

代码语言:javascript
复制
<FollowersContainer> 
  <UserList onFollow={func} onUnfollow={func} users={[...]}>
    <UserCard user={user} onFollow={func} onUnfollow={func}>
      <FollowButton onFollow={func} onUnfollow={func} isFollowing={bool} userId={string} />
    </UserCard>
  </UserList>
</FollowersContainer>

询问问题屏幕应显示AskButton

代码语言:javascript
复制
<AskQuestionContainer> 
  <UserList onAsk={func} users={[...]}>
    <UserCard user={user} onAsk={func}>
      <AskButton onPress={onAsk} />
    </UserCard>
  </UserList>
</AskQuestionContainer>

搜索结果不应显示任何按钮

代码语言:javascript
复制
<SearchResultsContainer> 
  <UserList users={[...]}>
    <UserCard user={user} />
  </UserList>
</SearchResultsContainer>

如您所见,所有三个屏幕都使用UserListUserCard组件。

目前,UserListUserCard需要了解onFollowonUnfollowonAsk操作,以及如何传递它们。

这可能会变得复杂且不太灵活。

理想情况下,我希望这样做:

代码语言:javascript
复制
<UserList 
  rowComponent={
    <UserCard button={<FollowButton />} />
  }
/>

但是,如何将操作从顶级组件传递到实际的按钮呢?我如何知道要通过哪些操作?

我可以在实际的按钮上使用connect来直接向它们传递操作,但我更喜欢这些组件保持纯粹和灵活。

有没有关于如何以干净的方式解决它的建议?

谢谢,阿兰。

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 23:20:27

您可以将组件作为道具进行传递。

代码语言:javascript
复制
render() {
  var passedButton = (<FollowButtton />);
  var row = (<UserCard button={passedButton} />);
  return (
    <UserList rowComponent={row}/>
  );
};

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33669407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档