在我的組件的渲染方法中,我需要通過props.children
變量進行過濾,查找具有特定方法或屬性的組件,但我無法公開任何方法或屬性對孩子。我希望從mixin繼承該方法。檢測子組件是否在React.js中有特定的混合/方法
例子:
var barMixin = {
isBar: function() { return true; }
};
var Foo = React.createClass({
render: function() {
var filteredChildren = this.props.children.filter(function(child) {
return child.isBar();
});
return (
<div>
{filteredChildren}
</div>
);
}
});
不幸的是,這個例子不起作用,因爲child.isBar
是undefined
即使子組件繼承混入barMixin
。
有什麼我誤解?我也試過聲明我的mixin方法是這樣靜態的:
var barMixin = {
statics: {
isBar: function() { return true; }
}
};
任何幫助將不勝感激。
編輯:
我已經找到了工作液:
var barMixin = {
getDefaultProps: function() {
return {
isBar: function() { return true; }
};
}
};
檢查與渲染功能:child.props.isBar()
。但是,這似乎不是正確的方式來做到這一點。
爲什麼要創建一個函數'isBar()'而不是'isBar:true'? – 2014-11-04 19:52:37
我想你從錯誤的角度看待它(只是猜測)。查看父母的狀態以決定是否應該呈現孩子。 – lpiepiora 2014-11-04 20:10:37
是的,你不應該這樣做。將道具從父母傳遞給孩子,以確定孩子應該如何渲染,或者讓父母決定渲染哪個組件。 – 2014-11-04 21:41:38