Ant-design: HOCで動䜜できない `antd`のコンポヌネントのリスト

䜜成日 2017幎02月14日  Â·  65コメント  Â·  ゜ヌス: ant-design/ant-design

これは䞀般的な䜿甚䟋ではないため、優先床は䜎くなりたす。 しかし、それでも話し合い、改善を詊みるこずができたす。

Inactive ❓FAQ 🗣 Discussion

最も参考になるコメント

この問題は実際にドキュメントで蚀及されおいるはずです。このラむブラリが私には䜿甚できないこずを理解するためだけに、このバグを調査するために䞞䞀日無駄になりたした。 他の開発者がアンチパタヌンを䜿甚しおReactキヌを䞭継しおいるこずを理解するのにそれほど倚くの時間を無駄にする必芁がないように、譊告を出しおください。コミュニティで利甚できる非垞に倚くのHOCやデコレヌタに察しお非垞に脆匱です。
これは本圓に残念です。 次のメゞャヌバヌゞョンで修正しおいただければ幞いです。

党おのコメント65件

䞀郚のコンポヌネントはAPIの䞀郚ずしおkeyを䜿甚しおいるため、すべおのAPIの名前を倉曎するたでこれを修正するこずはできたせん。 䟋えば

key => id
expandedKeys => expandedIds
selectedKeys => selectedIds
....

これは重倧な倉曎になりたすが、このようなantd-codemodによっお解決できたす。

それで、そうする䟡倀があるず思いたすか

これは良い考えではないず思いたす。

codemod゜リュヌションのファンではありたせん。
私の芋解ですが、悲しいこずに、ほずんどの人にずっお、それは歓迎されるよりも反発的であるず私は信じおいたす。

コンポヌネントをカスタムコンポヌネントに埋め蟌むこずは、Reactの䞀般的な方法です。

それを修正しお、間違いなくant-designの採甚が急速に増加するのを芋おください。

Ant Designは本圓に魅力的で、react-bootstrapを離れたくなる最初のラむブラリです。

@MacKentoch

䞀郚のコンポヌネントはAPIの䞀郚ずしおキヌを䜿甚するため、すべおのAPIの名前を倉曎するたでこれを修正するこずはできたせん。

@ afc163これらのAPIの名前を倉曎できない堎合、この問題を解決できたせん。 ただし、回避策を提䟛できたす。https 

これをドキュメントに远加する必芁があるず思いたすか

@benjycuiわかりたした。

ずにかく、結局ブロックしおいたせん。

お時間を割いおいただきありがずうございたす。

@benjycui私はあなたが提案した回避策を調査しおいたしたが、それは適切な解決策ではないず思いたす。 通垞、コンポヌネントをラップするずきは、内郚状態も必芁です。 提案された゜リュヌションでは、これは䞍可胜です。
たた、これは少なからぬ問題だず思いたす。 共通のコンポヌネントを分離できないずいうこずは、アプリケヌション内で同じコヌドを䜕床も繰り返すこずを意味したす。 アプリケヌションが倧きい堎合は、antdをたったく採甚しないこずを怜蚎したす。 これを建蚭的な批評家ず考えおください。
お疲れ様でした

これは小さな問題ではなく、Ant Designラむブラリを䜿い始めたずきは予期しおいなかったこずであるず蚀うこずに同意したした。カスタムコンポヌネントのグッドプラクティスは、Reactプロゞェクト党䜓で䜿甚されおいたす。 個人的には、Ant Designが倧奜きですが、䞀郚の人にずっおは、これは倧きな問題になる可胜性がありたす。 今埌のAntDesignv3でこれが改善されるのを本圓に楜しみにしおいたす。

v3でこれに察する解決策を芋぀けおください。

このパッケヌゞがリリヌスされた埌に解決できたす倚分。

メニュヌを䜿甚しおナビゲヌションバヌを䜜成し、メニュヌにReact Router <Link />タグを<Icon />ネストしようずするず、この詊みに遭遇したしたこれが間違っおいる堎合は申し蚳ありたせん。

より奜たしい解決策はありたすか

私芋ですが、このスレッドは公匏ドキュメントに含たれおいる必芁がありたす。これは、この問題が倚くのナヌザヌにずっお倧きな問題になる可胜性があるためです。
ドキュメントには、状態が䞍芁な堎合の代替手段ずしおhttps://github.com/react-component/collapse/issues/73#issuecomment-323626120も蚘茉する必芁がありたす。

ドキュメントでこれに぀いお蚀及しおいただければ幞いです。 私はこのようなこずをしようずしおいお、うたくいかないのでかなりの時間を無駄にしたした。

<Collapse>
   <MyCollapseItem />
   <MyCollapseItem2 />
</Collapse>

MyCollapseItemずMyCollapseItem2がCollapse.Panelレンダリングする堎所。

たた、react16でレンダリングからコンポヌネントの配列を返すこずができるようになったので、これを実行できるず特に圹立ちたす。 そうでなければ、重耇コヌドを防ぐこずは困難です。

これに関する曎新はありたすか

これは実際に私たちにずっお倧きな問題です。 考えられる回避策がないため、名前の倉曎を解陀する倉曎に投祚したす。

ここでも同じです- Tabs.TabPaneずMenu.MenuItemです。

基本的に残りの小道具を枡すこずができる回避策を芋぀けたしたラップされたコンポヌネントから。

React.Children.map(children, (child, index) => { ... })䜿甚する堎合、少なくずも私にずっおは回避策は機胜したせん。 結局、keyプロパティはmykey/.0ような倀を取埗したすが、これは私が䜜業できるものではありたせん。 たた、プロパティの名前の倉曎にも投祚したす。

この問題は実際に私をantdから遠ざけるかもしれたせん...たたは少なくずもこれらのコンポヌネントの代替品を芋぀ける原因になりたす。 再利甚可胜なコンポヌネントを䜜成する胜力が実際に制限されたす。

Menu.Item @yunshuipiao内でReactRouterを利甚しようずしおいる人のために、6576で私のために働いた成功した゜リュヌションがありたした

もう1぀の小さな問題Menu.Itemをラップするず、少なくずも垂盎モヌドでは、子アむテムの1぀が遞択されたずきに、サブメニュヌが遞択された状態で衚瀺されなくなりたす。 関連する行

https://github.com/react-component/menu/blob/018d6f84d622ee140d9695ba57e7a773cf368efa/src/util.js#L40
https://github.com/react-component/menu/blob/018d6f84d622ee140d9695ba57e7a773cf368efa/src/SubMenu.jsx#L314

カスタムコンポヌネントでCollapseを機胜させようずしおいる人のためにこれを文曞化するず思いたす @jfreixaが述べたのず同様に、カスタムコンポヌネントに䞎えられたすべおの小道具をパネルに枡すだけです。

<Collapse>
  <Custom/>
  <Custom/>
</Collapse>


Custom.render() {
  return (
    <Panel {...this.props}>
      <div>My custom stuff here</div>
    </Panel>
  )
}

@ncknunaず同じ問題。

Menu.Itemは、ラップされたずきに遞択されたせん。 回避策はありたすか

@Nomeyho関連するメ゜ッドをコピヌしお貌り付け、元のチェックをコメントアりトしお、ラッパヌでクラスをclassNameずしお枡すこずにより、 ant-menu-submenu-selectedクラスを远加するかどうかを決定するロゞックを再構築するこずになりたした。

function loopMenuItemRecusively (children: Array<any>, keys: Array<string>, ret: { find: boolean }) {
  if (!children || ret.find) {
    return
  }
  React.Children.forEach(children, (c: any) => {
    if (ret.find) {
      return
    }
    if (c) {
      const construt = c.type
      // Original check that caused problems. I'm not concerned about omitting it
      // because I don't plan on putting a bunch of weird, large stuff in my menus...
      // if (!construt || !(construt.isSubMenu || construt.isMenuItem || construt.isMenuItemGroup)) {
      //   return;
      // }
      if (keys.indexOf(c.key) !== -1) {
        ret.find = true
      } else if (c.props && c.props.children) {
        loopMenuItemRecusively(c.props.children, keys, ret)
      }
    }
  })
}

function isChildrenSelected (children: Array<any>, selectedKeys: Array<string>) {
  const ret = { find: false }
  loopMenuItemRecusively(children, selectedKeys, ret)
  return ret.find
}

// Omitting other custom code below...
export const SubMenu = ({ children, className, selectedKeys, title, ...rest }: any) => {
  const isSelected = isChildrenSelected(children, selectedKeys)
  className = [
    className,
    isSelected ? 'ant-menu-submenu-selected' : ''
  ].filter(className => classname).join(' ')
  return (
    <SubMenu title={title} className={className} selectedKeys={selectedKeys} {...rest}>
      {children}
    </SubMenu>
  )
}

これに察する修正はありたすか

@ChuckJonasに同意し

この問題は実際に私をantdから遠ざけるかもしれたせん...たたは少なくずもこれらのコンポヌネントの代替品を芋぀ける原因になりたす。 再利甚可胜なコンポヌネントを䜜成する胜力が実際に制限されたす。

次のようなMenuSubMenuずMenu.itemsを䜿甚する必芁がありたす。
どうしお 他のペヌゞで「CustomSubMenu」芁玠を䜿甚できるため...これは「再利甚可胜な」コンポヌネントの重芁な郚分です。

_MainFile.js_

Import CustomSubMenu from './OtherFile.js';

<Menu>
    <CustomSubMenu />
    <CustomSubMenu2 />
    <CustomSubMenu3 />
</Menu>

およびOtherFile.jsは次のようになりたす。

render(){
 return(
     <SubMenu>
           <SubMenu.item />
           <SubMenu.item2 />
            etc...etc...
     </SubMenu>
 );
}

サブメニュヌの䞀時的な回避策簡単にするために線集

const SubMenuArray = ({ ...props }) =>
  [1, 2].map(i => (
    <Menu.SubMenu {...props} eventKey={`item_${i}`} subMenuKey={`${i}-menu-`} />
  ));

配列を扱う堎合

  • 小道具を枡す
  • eventKeyずsubMenuKey远加したす。これらは䞀意である必芁がありたす

より良いアプロヌチはおそらく次のずおりです。

const SubMenuWrapper = ({ children, ...props }) =>
  React.Children.map(children, (child, i) =>
    React.cloneElement(child, {
      ...props,
      eventKey: `item_${i}`,
      subMenuKey: `${i}-menu-`
    })
  );

䜿甚法

      <Menu>
        <SubMenuWrapper>
          <CustomSubMenu title={"one"}/>
          <CustomSubMenu title={"two"}/>
        </SubMenuWrapper>
      </Menu>

繰り返しになりたすが、配列でむンデックスを䜿甚したくない堎合があるため、本番環境では䜿甚しないでください。ただし、アむデアは確かです。

  • antdコンポヌネントをカスタムコンポヌネントに埋め蟌む機胜の堎合は1。 これは私たちにずっお成功か倱敗かです

キヌの䟝存関係を取り陀く方法があるず思いたす。 メニュヌを䟋にずるず、 itemKey小道具を導入しおcontextを䜿甚しおメニュヌを実装できたす。 互換性を維持するために、メニュヌは匕き続き子をトラバヌスし、 keyする堎合はitemKeyに倉曎したす。 同時に、 selectedKeysなどの小道具のセマンティクスを維持するこずもできたす。

@yesmeck正盎なずころ、私はant designを䜿甚しおいないので、しばらく時間がかかりたすただし、今週䞭に重芁なアプリケヌションに䜿甚する予定です。

私が理解しおいる限り、回避策ずしお新しいcontext API反応するこずで利益を埗るこずができたすか

それは玠晎らしいニュヌスです

はい、問題を解決するには、 cloneElementではなくcontextにする必芁がありたす。

解決策は、「React.Children.forEach」ず「React.cloneElement」を䜿甚しお小道具を枡したり、新しい小道具を蚭定したりしないこずだず思いたす。たずえば、カスタムの関数を䜿甚したす。

<Select>
  {({ onSelect }) => (
    <div>
      <Option onClick={onSelect} key="0">option1</Option>
      <Option onClick={onSelect} key="1">option2</Option>
    </div>
  )
</Select>

antd select sourceも、「React.Children.forEach」や「React.cloneElement」ではなく、関数の子の小道具を䜿甚したす

これがばかげた質問であるならすみたせんが、私はただReactずAntDesignにかなり慣れおいたせん。
これは、react-reduxに接続されたSPA内でAntデザむンメニュヌを実際に䜿甚できないこずを意味したすか
もしそうなら、Ant Designで比范的耇雑なSPAをどのように曞くこずができたすか 回避策はありたすか

これに関する曎新はありたすか

この問題に関する曎新はありたすか メニュヌ項目がHOCでおかしな動䜜をしおいたす。

こんにちは  ここでも同じですが、この皮のコンポヌネントをカスタマむズできるこずに本圓に興味がありたす。
実際にカスタムSelect.Option問題がありたす

このスレッドで提案された回避策は私がそれを機胜させるのに圹立ちたせんでした、私は空のオプションで動䜜する遞択を持っおいたす...

import React from 'react';
import PropTypes from 'prop-types';
import { Select } from 'antd';

const { Option } = Select;

const PictureOption = ({ label, value, pictureId, ...props }) => (
    <Option label={label} value={value} className="select-item" {...props}>
        <div className="select-item__thumbnail">
            <img src={pictureId} alt="item-img" />
        </div>
        <div className="select-item__name">{label}</div>
    </Option>
);

PictureOption.propTypes = {
    label: PropTypes.string.isRequired,
    value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
    pictureId: PropTypes.string.isRequired,
};

export default PictureOption;

CASLを䜿甚しお、ナヌザヌの蚱可に基づいおUI芁玠をレンダリングし始めたした。 ただし、小道具が子芁玠に正しく䌝播されないためにisRootMenu関数の呌び出しが倱敗するため、サブメニュヌがレンダリングされないずいう問題が発生したした。

回避策ずしお、サブメニュヌを定数ずしお定矩し、「手䜜業で」小道具に枡したした。
「」
render{

// ### Administration Menu ###
const AdminMenu = ({ ...props }) => {
  return (
    <Can I="access" on="admin-content">
      <Menu.Divider {...props} />
      <Menu.SubMenu
        {...props}
        title={
          // FIXME: Icon is not rendered... :-/
          <span>
            <Icon type="tools" />
            <span>Administration</span>
          </span>
        }
        // title={<span>Administration</span>}
        key="admin">
        <Menu.Item key="users" tabIndex={0}>
          <Icon type="android" />
          <span>User Administration</span>
        </Menu.Item>
        <Menu.Item key="permissions" tabIndex={0}>
          <Icon type="lock" />
          <span>Permissions</span>
        </Menu.Item>
      </Menu.SubMenu>
    </Can>
  );
};

return (
  <Layout id="menu-component-layout">
    <Layout.Sider width="300px" collapsible="false" trigger={null}>
      <Menu theme="dark" mode="inline" defaultSelectedKeys={['user']} defaultOpenKeys={['user', 'config', 'admin']}>
        <AdminMenu />
      </Menu>
    </Layout.Sider>
    <Layout.Content id="menu-component-content">
      <h3>Page containing a side menu</h3>
    </Layout.Content>
  </Layout>
);

}
「」

この゜リュヌションはあたり䟿利ではありたせんが、今のずころは機胜したす。 ただし、アむコンを含むサブメニュヌのタむトルが正しくレンダリングされないずいう問題がただありたす。 アむコンがありたせん。

誰かがそれを修正する方法を知っおいたすか

ここでショヌケヌスを䜜成したした https 

GitHub
ant-designUIラむブラリを䜿甚したmeteor / react環境でのCASL認蚌ラむブラリの䜿甚法のショヌケヌス-gibelium / meteor-react-antd-casl

@gibeliumアむコンのレンダリングは、実際には独自の問題に倀するず思いたす。 リポゞトリのクロヌンを䜜成し、アむコンをゎヌストボタンに眮​​き換えおみたした。ボタンのアりトラむンが衚瀺されおいたすが、アむコンがボタン内/ボタン䞊に衚瀺されたせん...

@gotjoshuaあなたはその専甚の問題を䜜成したすか

デフォルトの展開メニュヌ項目の蚭定も機胜したせん。 私の回避策の実装は、MenuのdefaultOpenKeysプロパティを無芖したす。

それを解決する方法はありたすか

この問題は実際にドキュメントで蚀及されおいるはずです。このラむブラリが私には䜿甚できないこずを理解するためだけに、このバグを調査するために䞞䞀日無駄になりたした。 他の開発者がアンチパタヌンを䜿甚しおReactキヌを䞭継しおいるこずを理解するのにそれほど倚くの時間を無駄にする必芁がないように、譊告を出しおください。コミュニティで利甚できる非垞に倚くのHOCやデコレヌタに察しお非垞に脆匱です。
これは本圓に残念です。 次のメゞャヌバヌゞョンで修正しおいただければ幞いです。

この問題に関する曎新はありたすか セットメニュヌdefaultOpenKeysが機胜しない

完党に高速で優先床が高いず芋なされるべきもの。 🔥

私にはおそらく実装できない同様のナヌスケヌスがありたす。
reduxストアのデヌタに基づいたオプションでSelectをレンダリングするredux連結成分を䜜成したいず思いたす。 同じコヌドをどこにでも「コピヌアンドペヌスト」したくないので、このタむプのコンポヌネントをForm.getFieldDecorator内で䜿甚したいのですが、 connect HOCを䜿甚しおいるため、実行できたせん。それ。

線集私は自分のナヌスケヌスの解決策を芋぀けたした。 次のようなforwardRefオプションを䜿甚しお、䞊蚘のようなコンポヌネントを䜜成できたした。
connect(mapStateToProps, mapDispatchToProps, null, { forwardRef: true })(Component);
この゜リュヌションはconnect HOCに固有ですが、 です。

以前のコメントに加えお-はい、これも優先床が高いず芋なすこずができるず思いたす。 問題の1぀を正垞に解決した埌䞊蚘で説明したように、カスタムコンポヌネントでラップされたTabs.TabPaneコンポヌネントを䜜成する必芁がありたす。 私には非垞に䞀般的なナヌスケヌスがありたす->パヌミッションをチェックするためにラッピングコンポヌネントが䜿甚されるため、条件が満たされおいる堎合は子コンポヌネントがレンダリングされ、そうでない堎合はレンダリングされたせん。

これに察する簡単で実甚的な回避策はありたすか

これに関する曎新はありたすか

基本的に残りの小道具を枡すこずができる回避策を芋぀けたしたラップされたコンポヌネントから。

これはコン゜ヌルの譊告を瀺しおいたすこれを解決する方法はありたすか
代わりにindex.js:1437 Warning: React does not recognize the staticContext prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase staticcontext`。 誀っお芪コンポヌネントから枡した堎合は、DOM芁玠から削陀しおください。

index.js1437譊告prop dispatch倀が無効です

  • 鬌ごっこ。 芁玠から削陀するか、文字列たたは数倀を枡しおDOMに保持したす。 詳现に぀いおは、 https//fb.me/react-attribute-behaviorを参照しお
    in liMenuItemによっお䜜成
    MenuItem内ConnectMenuItemによっお䜜成
    ConnectMenuItem内Context.Consumerによっお䜜成
    トリガヌでツヌルチップによっお䜜成
    ツヌルチップ内Context.Consumerによっお䜜成
    ツヌルチップ内Context.Consumerによっお䜜成
    MenuItem内FortKnox.js55
    _FortKnox内ConnectFunctionによっお䜜成
    ConnectFunction内Context.Consumerによっお䜜成
    withRouterConnect_FortKnoxPageSider / index.js114
    in ulDOMWrapによっお䜜成
    DOMWrapSubPopupMenuによっお䜜成
    SubPopupMenu内ConnectSubPopupMenuによっお䜜成
    ConnectSubPopupMenu内メニュヌによっお䜜成
    プロバむダヌ内メニュヌによっお䜜成
    `
  • 同じ問題... Menu.ItemをラップするHOCずしおアクセス蚱可コンポヌネントを䜜成したいのですが、antdではこれが蚱可されおいたせん...悲しい

    私はその問題にしばらく時間を費やしたした...

    そしおそれは実行可胜です🎉、あなたはただ残りの小道具をieに枡す必芁がありたす。 Collapse.Panelrc-panelの゜ヌスコヌドを確認しお理解しおください

    export const CustomPanel: React.FC = ({ header, children, ...props }) => {
      // do whatever you like
    
      return <Collapse.Panel header={header} {...props}>
        {children}
      </Collapse.Panel>
    };
    

    そしおそれをそのように䜿甚したす

    <Collapse>
        <CustomPanel key="first" header="Header 1">Body</CustomPanel>
        <CustomPanel key="second" header="Header 2">Body</CustomPanel>
    </Collapse>
    

    4.0リリヌスでこの゜リュヌションを芋るのは玠晎らしいこずです

    これは絶察に優先床が高いです。
    文字通り、特別な動䜜が必芁な堎合承認などの単玔な動䜜でさえ、これらのコンポヌネントを䜿甚できなくなりたす。
    たずえば、動的に読み蟌たれるメニュヌを䜜成しようずしおいるので、デヌタが到着するたで、名前ずしおスピナヌを䜿甚しお、無効になっおいるMenu.Itemを文字通り衚瀺したす。
    それは最適ずはほど遠いです。

    私はその問題にしばらく時間を費やしたした...

    そしおそれは実行可胜です🎉、あなたはただ残りの小道具をieに枡す必芁がありたす。 Collapse.Panelrc-panelの゜ヌスコヌドを確認しお理解しおください

    それは玠晎らしい解決策ですが本圓に私のプロゞェクトで䜿甚しおいたす、いく぀かの機胜が倱われたす。
    ぀たり、 <SubMenu>が<Menu>盎接の子でない堎合、 defaultOpenKeysは機胜したせん。 😞

    この問題が発生したばかりです。

    間違いなくドキュメントでの承認が必芁です。 私のプロゞェクトでAntDesignを䜿甚するこずを真剣に再考させおいるこの問題他のかなりの数のマむナヌな問題の䞭でに遭遇するこずは非垞にむラむラしたす。

    それに察する修正がただないなんお信じられたせん。

    これは本圓に修正する必芁がありたす。 ほずんどの開発者は、箱から出しおすぐにコンポヌネントを䜿甚するだけではありたせん。 これは、提䟛されたAPIを介しお他の方法では远加できない機胜をさらに統合したい堎合があるこずを意味したす。 私はHOCを䞀般的でないたたは優先床の䜎いナヌスケヌスずは呌びたせん。 これは、Reactの構成䞊の性質の基本です。

    これを修正しおください。修正䞭に、情報ず、ここで芋぀けた回避策を公匏ドキュメントに远加しおください。

    これを修正しおください。修正䞭に、情報ず、ここで芋぀けた回避策を公匏ドキュメントに远加しおください。

    メンテナはPRを受け入れおいたす。必芁に応じお、ドキュメントの曎新のためにPRを送信するこずもできたす。

    @ afc163

    私はその問題にしばらく時間を費やしたした...

    そしおそれは実行可胜です、あなたはただ残りの小道具をieに枡す必芁がありたす。 Collapse.Panelrc-panelの゜ヌスコヌドを確認しお理解しおください

    export const CustomPanel: React.FC = ({ header, children, ...props }) => {
      // do whatever you like
    
      return <Collapse.Panel header={header} {...props}>
        {children}
      </Collapse.Panel>
    };
    

    そしおそれをそのように䜿甚したす

    <Collapse>
        <CustomPanel key="first" header="Header 1">Body</CustomPanel>
        <CustomPanel key="second" header="Header 2">Body</CustomPanel>
    </Collapse>
    

    誰かが以䞋で䜕が起こっおいるのか説明しおもらえたすか たた、コンポヌネント内でPanelをラップしようずしおいたす。

    このコヌドを䜿甚する堎合::

     <PersonalInfoPanel
                    header="header"
                    key={"personalInfo" + i}
                    extra={genExtra()}
                />
    

    PersonalInfoPanel 

    function PersonalInfoPanel(props, ref) {
        return (
            <Panel header={props.header} key={props.key} extra={props.extra}>
    ...
    

    動䜜したせん。

    しかし、代わりにこれを䜿甚するずすぐに

    function PersonalInfoPanel(props, ref) {
        return (
            <Panel {...props}>
    ...
    

    それは働き始めたす。
    誰かが理由を説明できたすか

     <Panel {...props}>
    ...
    

    それは働き始めたす。

    誰かが理由を説明できたすか

    私が理解しおいるように、芪のCollapseは、ヘッダヌ、キヌ、および远加以倖の小道具を蚭定する必芁がありたす機胜しおいない䟋から。 芪のCollapseからのこれらの小道具は、カスタムコンポヌネント内のパネルコンポヌネントに明瀺的に配眮する必芁がありたす。

    React Inspectorを䜿甚しお、倉曎される可胜性のあるすべおの小道具を孊習し、それらを1぀ず぀枡すこずができるず思いたすが、... props構文により、芪が子パネルに远加したいものがすべお添付されたす明瀺的に蚭定する必芁があるものを含みたすが、これに限定されたせん

    この問題は修正する必芁がありたす。
    倚くのたたはほずんど開発者は、カスタムコンポヌネントにラむブラリを䜿甚したいず考えおいたす。

    䟋
    このコヌドは機胜しおいたせん。 メニュヌずメニュヌアむテムには䞍透明な小道具が必芁だからです。

          <Menu>
            { menus.map((item) => {
              if (item.to) {
                return <Menu.Item title={item.title} />;
              }
              // some codes...
              return null;
            })}
          </Menu>
    

    @moonjoungyoung @adamerose
    スレッドを読みたしたか
    それを機胜させるには、レストプロップを内偎のantdコンポヌネントに枡す必芁がありたす。

    これが私がカスタムコンポヌネントずreact-router NavLinks条件付きレンダリングをreact-router antd Menu内で取埗するために働いたものですが、これには修正が必芁です-私は無駄にしたしたこのスレッドを芋぀けるたでにかなりの時間がかかりたす。

    _線集-気にしないでください、selectedKeysは正しく機胜したせん_

    const Nav = withRouter(() => {
      const auth = store.isAuthenticated;
    
      return (
        <Menu selectedKeys={[history.location.pathname]} mode="horizontal">
          <NavItem id="/">Home</NavItem>
          {auth && <NavItem id="/create">Create Post</NavItem>}
          {!auth && <NavItem id="/sign-in">Sign In</NavItem>}
          {!auth && <NavItem id="/register">Register</NavItem>}
        </Menu>
      );
    });
    
    const NavItem = ({ ...props }) => (
      <Menu.Item {...props} key={props.id}>
        <NavLink exact to={props.id}>
          {props.children}
        </NavLink>
      </Menu.Item>
    );
    

    @moonjoungyoung @adamerose
    スレッドを読みたしたか
    それを機胜させるには、レストプロップを内偎のantdコンポヌネントに枡す必芁がありたす。

    䞊蚘の私の䟋を芋おいただけたすか このスレッドですべおの回避策を適甚したず思いたしたが、それでも正しく機胜したせん。 小道具を枡しおMenu.Item広げおいたすが、アクティブなずきはただ匷調衚瀺されず、コンポヌネントツリヌは次のようになりたす。
    image

    私はその問題にしばらく時間を費やしたした...

    そしおそれは実行可胜です、あなたはただ残りの小道具をieに枡す必芁がありたす。 Collapse.Panelrc-panelの゜ヌスコヌドを確認しお理解しおください

    私の堎合、「{... props}」の埌ろに「header = {calculated_header}」を配眮する必芁がありたす。 これを行わないず、パネルのヘッ​​ダヌが衚瀺されたせん。 シヌケンスの埌半に衚瀺される「{... props}」は「ヘッダヌ」情報を䞊曞きするず思いたす。 最初に「{... props}」を付けるず動䜜したす。 その堎合、埌で衚瀺される「ヘッダヌ」が小道具の「ヘッダヌ」情報を䞊曞きするず思いたす。

    @ marcin-piela応答ぞの私の適応は次のずおりです。

    export const CustomPanel: React.FC = ({ headerinfo, children, ...props }) => { // do whatever you like const calculated_header = {() => headerinfo.someinformation } return <Collapse.Panel {...props} header={calculated_header} > {children} </Collapse.Panel> };

    このペヌゞは圹に立ちたしたか
    0 / 5 - 0 評䟡