Responsive design 如何在反应中传递道具给兄弟姐妹?
我已经(一定要打开与Chrome的链接),现在我正试图在React中实现它。我还附上了一些布局的截图 该应用程序应该是典型的tab/nav应用程序,但由于响应性布局,在React中使用视图层次结构非常困难 我已经构建了一个名为Responsive design 如何在反应中传递道具给兄弟姐妹?,responsive-design,reactjs,Responsive Design,Reactjs,我已经(一定要打开与Chrome的链接),现在我正试图在React中实现它。我还附上了一些布局的截图 该应用程序应该是典型的tab/nav应用程序,但由于响应性布局,在React中使用视图层次结构非常困难 我已经构建了一个名为Layout的React组件来抽象掉所有的布局内容。Layout还为renderLeft、renderRight、title和onTab提供了道具。然后,布局的子项被渲染到内容块中 简单的解决方案是将布局作为当前视图的子视图,并呈现您想要的任何内容。然而,这将打乱我的一些动
Layout
的React组件来抽象掉所有的布局内容。Layout还为renderLeft
、renderRight
、title
和onTab
提供了道具。然后,布局的子项被渲染到内容块中
简单的解决方案是将布局作为当前视图的子视图,并呈现您想要的任何内容。然而,这将打乱我的一些动画。我希望在选项卡栏、标题和左右按钮周围有一个CSSTransitionGroup元素,在它们更改时为它们设置动画。因此,视图之间的布局
元素必须保持不变,否则将为每个视图呈现一个新的CSSTransitionGroup元素,这是不好的
现在的问题是,我有一个Layout
组件,它的视图呈现为它的子视图(但是对于App
组件来说有点像兄弟),但是视图需要为它的父布局指定renderLeft
、renderRight
和title
!例如,在顶级的App
组件中,渲染功能可能如下所示,我需要某种方法从视图设置布局的renderLeft
render(){
返回(
)
}
到目前为止,我唯一想到的似乎完全是错误的做法:
在顶级App
组件中,为renderLeft
、renderRight
和title
设置一个状态变量,然后App
将这些变量传递给布局
道具。现在,对于视图,传递一些函数,如setRenderLeft
、setRenderRight
和setTitle
,这些函数将更改App
状态,从而更改布局。因此,我们可以在组件willmount
中为每个视图调用这些函数
这看起来像是一次彻底的黑客攻击,似乎打破了单向数据流的整个概念。然而,我不知道还有什么办法可以做到!还有其他更合适的方法吗?在构建iOS应用程序时,我想到了委托的概念,但这是非常面向对象的,而不是非常FP的
有什么想法吗
你的问题有点难以准确说出问题所在,但是如果我是你,我会仔细阅读
用于在两个没有
父子关系,您可以设置自己的全局事件
系统。在componentDidMount()中订阅事件,在中取消订阅
componentWillUnmount(),并在收到事件时调用setState()。
通量模式是安排这种情况的可能方式之一
你想让兄弟姐妹与父母交谈并在那里交流,或者在全球层面上交流
希望这能有所帮助。你的问题有点难以准确说出问题所在,但是如果我是你,我会仔细阅读
用于在两个没有
父子关系,您可以设置自己的全局事件
系统。在componentDidMount()中订阅事件,在中取消订阅
componentWillUnmount(),并在收到事件时调用setState()。
通量模式是安排这种情况的可能方式之一
你想让兄弟姐妹与父母交谈并在那里交流,或者在全球层面上交流
希望这能有所帮助。问题在于我的布局视图需要从其子视图获取信息。我想我必须使用某种全球活动系统。但出于某种原因,这感觉很糟糕。数据流将不再是单向的…全局事件正是FB建议的。我不认为数据在链中是反向的,它只是从子结构推到结构的顶部,然后向下流动。我想是这样的。它只是更“纯粹”,这可能就是它感觉不舒服的原因。但这是有道理的。我不知道你还能怎么做…问题是我的布局视图需要从它的子视图获取信息。我想我必须使用某种全球活动系统。但出于某种原因,这感觉很糟糕。数据流将不再是单向的…全局事件正是FB建议的。我不认为数据在链中是反向的,它只是从子结构推到结构的顶部,然后向下流动。我想是这样的。它只是更“纯粹”,这可能就是它感觉不舒服的原因。但这是有道理的。我不知道你还能怎么做。。。