我正在构建一些React组件,有时想要在控制台上记录正在呈现的组件类型displayName
,JSX在显示组件名称时使用它.
从组件的上下文中,我如何访问该displayName
属性?
例如,如何console.log
在此示例中使用该语句显示组件的displayName?
var Hello = React.createClass({
displayName: 'HeyHey',
render: function() {
console.log(this.displayName);
return <div>Hello {this.props.name}</div>;
}
});
Run Code Online (Sandbox Code Playgroud)
控制台中的预期输出:
HeyHey
人们通常如何在React应用程序中获取"全局"数据?
例如,假设用户登录我的应用后,我有以下数据.
user: {
email: 'test@user.com',
name: 'John Doe'
}
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序中几乎所有组件可能想知道的数据 - 因此它可以在登录或注销状态下呈现,或者如果登录则可能显示用户电子邮件地址.
根据我的理解,在子组件中访问此数据的React方法是为顶级组件拥有数据,并使用属性将其传递给子组件,例如:
<App>
<Page1/>
<Page2>
<Widget1/>
<Widget2 user={user}/>
</Page2>
</App>
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎很笨拙,因为这意味着我必须通过每个复合材料传递数据,只是为了将它传递给需要它的孩子.
是否存在管理此类数据的React方法?
注意:这个例子非常简单 - 我喜欢将意图包装成复合材料,因此可以根据需要彻底改变整个UI功能的实现细节.
编辑:我知道默认情况下,调用setState
我的顶级组件会导致所有子组件被重新渲染,并且在每个子组件中我可以使用我喜欢的任何数据进行渲染(例如全局数据,而不仅仅是状态或道具).但是,人们如何选择仅通知某些子组件应该呈现它们?
如何在Eclipse 3.6中导出我的设置(字体,语法着色,格式化等),以便在其他安装中再次使用它们?
我希望能够弄清楚React组件与某个DOM元素相关联的内容.
例如,假设我有一个div,并且我使用React渲染我的整个应用程序.div必须由React组件呈现 - 但是哪一个?
我知道React提供了方法" getDOMNode "来获取与React组件关联的DOM节点,但我想做相反的事情.
这可能吗?
我正在构建一个Web应用程序,它使用类似的拖放隐喻,trello通过将卡片从一个列表拖放到另一个列表来移动卡片.
我怎样才能做到这一点?
当我在另一个分支之间进行Github比较视图时,Github似乎将HEAD版本与较旧的非头版本进行比较.master
A
A
master
我调查了一下,从我能说的话来看,听起来像Github正在将分支A
与一个共同的祖先进行比较master
.实际上并没有将它与目前HEAD
掌握的那些进行比较.
有没有办法A
在Github 中将master的HEAD与Head的HEAD区分开来?
如果没有,为什么不呢?这似乎是每个开发人员都希望能够做到的功能.或者是否有一些我可能会缺失的过程?我希望能够直接从这些差异之一创建一个Pull Request.
编辑:这是一个示例回购,显示问题
https://github.com/bradparks/test_github_diff_view
v100
.A
,并将该行更改为"v200"然后我将主分支中的值更改为"v300",然后使用比较链接比较2个分支
https://github.com/bradparks/test_github_diff_view/compare/A
我看到以下意外结果.为什么不反对v300
而不是v100
?
运行负载测试时,我得到以下结果.任何人都可以帮我阅读报告吗?
the number of thread = '500 '
ramp up period = '1'
Sample = '500'
Avg = '20917'
min = '820'
max = '48158'
Std Deviation = '10563.178194669255'
Error % = '0.046'
throughput = '10.375381295262601'
KB/Sec = `247.05023046315702`
Avg. Bytes = '24382.664'
Run Code Online (Sandbox Code Playgroud) 我想覆盖Objective C类中我没有源代码的方法.
我已经研究过了,看来Categories应该允许我这样做,但是我想在我的新方法中使用旧方法的结果,使用super来获得旧方法的结果.
每当我尝试这个时,我的方法被调用,但"超级"是零...任何想法为什么?我正在使用XCode 2.2 SDK进行iPhone开发.我肯定在使用类的实例,类的方法是实例方法.
@implementation SampleClass (filePathResolver)
-(NSString*) fullPathFromRelativePath:(NSString*) relPath
{
NSString *result = [super fullPathFromRelativePath: relPath];
... do some stuff with the old result
return result;
}
Run Code Online (Sandbox Code Playgroud)
注意和澄清:从我在Apple Docs中看到的情况来看,在我看来应该允许这样做?
developer.apple.com上的类别文档: 当类别覆盖继承的方法时,类别中的方法可以像往常一样通过消息调用继承的实现到超级.但是,如果某个类别覆盖了类别类中已存在的方法,则无法调用原始实现.
我一直在隐藏/显示反应组件而不渲染它们,例如:
render: function() {
var partial;
if (this.state.currentPage === 'home') {
partial = <Home />;
} else if (this.state.currentPage === 'bio') {
partial = <Bio />;
} else {
partial = <h1>Not found</h1>
}
return (
<div>
<div>I am a menu that stays here</div>
<a href="#/home">Home</a> <a href="#/bio">Bio</a>
{partial}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
但只是说<Bio/>
组件有很多内部状态.每次我重新创建组件时,它都会丢失它的内部状态,并重置为它的原始状态.
我当然知道我可以将数据存储在某个地方,并通过道具传递或者只是全局访问它,但这些数据实际上不需要存在于组件之外.我也可以使用CSS(display:none
)隐藏/显示组件,但我更喜欢隐藏/显示它们如上所述.
这里的最佳做法是什么?
编辑:也许更好的方式来说明问题是使用一个例子:
忽略React,并假设您刚刚使用的桌面应用程序具有带有名为A的Tab组件的配置对话框,该组件具有2个选项卡,名为1和2.
假设标签A.1有一个电子邮件文本字段,您可以填写您的电子邮件地址.然后单击Tab A.2一秒钟,然后单击返回选项卡A.1.发生了什么?您的电子邮件地址将不再存在,它将被重置为空,因为内部状态未存储在任何地方.
内部化状态的工作原理如下面的答案之一所示,但仅适用于组件及其直接子项.如果组件任意嵌套在其他组件中,比如选项卡中选项卡中的选项卡,那么它们保持内部状态的唯一方法是将其外部化,或者使用display:none
实际上始终保留所有子组件的方法.
在我看来,这种类型的数据不是你想要弄乱应用程序状态的数据......甚至想要甚至不得不考虑.看起来您应该能够在父组件级别控制数据,并选择保留或丢弃,而不使用该display:none
方法,并且不关心自己如何存储的详细信息.
我正在尝试安装 Eclipse,但无法启动安装程序。它失败了
“未能创建 Java 虚拟机”
我该如何解决这个问题?
注意:我在 Mac 上。