私はリアクタンスレスキューには新しく、現在はソフトウェアアーキテクチャチームからステートレス機能コンポーネントとしてすべてのコンポーネントを書き込むというプロジェクトに取り組んでいますReact 0.14に導入されました)、還元状態の部分を渡す必要があるときはいつでも、私たちは容器を使うべきです。クラスコンポーネント(ローカル状態)をステートレス機能コンポーネントとコンテナに変換する
私の質問は次のとおりです: このパターンはすべてのコンポーネントに適用できますか?独自の "状態"(redux状態ではない)を持つクラスベースのコンポーネントの場合でもですか?すべてのクラスコンポーネントをステートレス機能コンポーネントとコンテナとして書き換えることは可能ですか? チームは、当社の構成部品の内側にタブ機能を実装するためにreactstrap-tabsを使用することを決定しました:
私が求めていた理由は、実際には、より具体的です。タブは親コンポーネント内にあり、各タブ内には異なる子コンポーネントが表示されます。ドキュメントから、親のタブ付きコンポーネントはクラスベースのコンポーネント(this.stateを扱う)として実装されるべきだと思われます。ステートレス機能コンポーネントとコンテナとしてこれを書き直すことは可能ですか?
私はこれに固執しているので、任意のヘルプは本当に感謝します。ここでは、サンプルコードが...
import React from 'react';
import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col } from 'reactstrap';
import classnames from 'classnames';
import MyFirstChildComponent from '/components/MyFirstChildComponent';
import MySecondChildContainer from '/containers/MySecondChildContainer';
export default class TabbedParent extends React.Component {
constructor(props) {
super(props);
this.toggle = this.toggle.bind(this);
this.state = {
activeTab: '1'
};
}
toggle(tab) {
if (this.state.activeTab !== tab) {
this.setState({
activeTab: tab
});
}
}
render() {
return (
<div>
<Nav tabs>
<NavItem>
<NavLink
className={classnames({ active: this.state.activeTab === '1' })}
onClick={() => { this.toggle('1'); }}
>
MyFirstTab
</NavLink>
</NavItem>
<NavItem>
<NavLink
className={classnames({ active: this.state.activeTab === '2' })}
onClick={() => { this.toggle('2'); }}
>
MySecondTab
</NavLink>
</NavItem>
</Nav>
<TabContent activeTab={this.state.activeTab}>
<TabPane tabId="1">
<Row>
<Col sm="12">
<MyFirstChildComponent />
</Col>
</Row>
</TabPane>
<TabPane tabId="2">
<Row>
<Col sm="6">
<MySecondChildContainer />
</Col>
</Row>
</TabPane>
</TabContent>
</div>
);
}
}
コメントありがとうございました。タブの例がコンテナでどのように動作するかを正確に描いていますが、苦労しています。 1つのタブだけで簡単なサンプルを提供することは可能ですか? – empyreal
ええ、どのように見えるかの例を追加しました。 –
ありがとう!私はあなたの答えをマークしました!しかし、私の主な質問はまだ残っています。ステートレス機能のコンポーネントとしてすべてのコンポーネントを記述し、グローバルなredux状態で「再生」することは可能でしょうか、これが起こり得ない場合がありますか? – empyreal