複数の子コンポーネントでreact-joyrideを使用する

静けさ

react-joyrideアプリケーションで使用たいのですが、問題があります。コンポーネントをNavbarとに分解しましたSideNavigationそれらは別個の子コンポーネントです。これreact-joyrideで、最初のSideNavigationステップと最後のステップの両方で使用たいと思いNavbarます。どうすればそうできますか?

これが私のコードです

class AgentDashboard extends React.Component {
  constructor() {
    super();
    this.state = {
      username: "",
      roles: [],
      joyrideOverlay: true,
      joyrideType: "continuous",
      isReady: false,
      isRunning: false,
      stepIndex: 0,
      steps: [],
      selector: ""
    };
  }
  componentDidMount() {
  this.setState({
      isReady: true,
      isRunning: true,
    });
  }


  addSteps(steps) {
    let newSteps = steps;
    if (!Array.isArray(newSteps)) {
      newSteps = [newSteps];
    }

    if (!newSteps.length) {
      return;
    }

    this.setState(currentState => {
      currentState.steps = currentState.steps.concat(newSteps);
      return currentState;
    });
  }

  callback(data) {
    this.setState({
      selector: data.type === "tooltip:before" ? data.step.selector : ""
    });
  }

  next() {
    this.joyride.next();
  }

  render() {
    const {
      isReady,
      isRunning,
      joyrideOverlay,
      joyrideType,
      selector,
      stepIndex,
      steps
    } = this.state;
    let html;
    if (isReady) {
      html = (
        <div>
          <Joyride
            ref={c => (this.joyride = c)}
            callback={data => this.callback(data)}
            debug={false}
            disableOverlay={selector === ".card-tickets"}
            locale={{
              back: <span>Back</span>,
              close: <span>Close</span>,
              last: <span>Last</span>,
              next: <span>Next</span>,
              skip: <span>Skip</span>
            }}
            run={isRunning}
            showOverlay={joyrideOverlay}
            showSkipButton={true}
            showStepsProgress={true}
            stepIndex={stepIndex}
            steps={steps}
            type={joyrideType}
          />
          <TopNavigation
            username={this.state.username ? this.state.username : ""}
            }
            roles={this.state.roles}
          />
          <main className="imp">
            <SideNavigation
              currentNav={this.props.location.pathname.substring(1)}
              addSteps={steps => this.addSteps(steps)}
              selector={selector}
              next={() => this.next()}
            />
          </main>
        </div>
      );
    }
    return (
      <div>
        {html}
      </div>
    );
  }
}

export default connect(mapStateToProps, mapDispatchToProps)(AgentDashboard);

SideNavigation.js

const sideMenus = [
  {
    menu: "My Property",
    link: "imp/dashboard/my-properties",
    icon: "icon-hotel",
    class: "hotel-selector"
  },
  {
    menu: "My IMP",
    link: "imp/dashboard/my-imps",
    icon: "icon-people-outline",
    class: "imp-selector"
  },
];

class SideNavigation extends React.PureComponent {
  componentDidMount() {
    const steps = [
      {
        title: "Trigger Action",
        text: "It can be click",
        selector: ".imp-dashboard",
        position: "right",
        type: "hover",
      },
      {
        title: "Advance customization",
        text:
          "You can set individual styling options for beacons and tooltips.",
        selector: ".hotel-selector",
        position: "bottom",
        allowClicksThruHole: true,
        style: {
          backgroundColor: "#ccc",
          mainColor: "#000",
          header: {
            color: "#f04",
            fontSize: "3rem",
            textAlign: "center"
          },
          footer: {
            display: "none"
          },
          beacon: {
            inner: "#000",
            outer: "#000"
          }
        }
      }
    ];
    this.props.addSteps(steps);
  }

  handleClick = e => {
    e.preventDefault();
    const { next } = this.props;
    next();
  };

  render() {
    const { currentNav, selector } = this.props;
    const menuToShow = sideMenus.map(menuItem =>
      <Menu.Item key={menuItem.link} className={menuItem.class}>
        <NavLink
          activeClassName={currentNav.includes(menuItem.link) ? "active" : ""}
          to={`/${menuItem.link}`}
        >
          <i className={menuItem.icon} />
          <span>
            {menuItem.menu}
          </span>
        </NavLink>
      </Menu.Item>
    );
    return (
      <Sidebar.Pushable>
        <Sidebar
          as={Menu}
          width="thin"
          visible
          icon="labeled"
          vertical
          inverted
        >
          <Menu.Item name="dashboard" className="imp-dashboard">
            <NavLink
              activeClassName={currentNav === "imp/dashboard" ? "active" : ""}
              to="/imp/dashboard"
            >
              <i className="icon-activity" />
              <span>Dashboard</span>
            </NavLink>
          </Menu.Item>
          {menuToShow}
        </Sidebar>
        <Sidebar.Pusher>
          <Routes />
        </Sidebar.Pusher>
      </Sidebar.Pushable>
    );
  }
}

このようなコンポーネントの分解/構造でreact-joyrideを使用することは可能だと思いますか?どうすれば使えるのか全くわかりません。誰か案内してもらえますか?私はなんとか上記のコードを書くことができましたが、エラーが発生せず、ボタンがクリックされたときにイントロ部分が機能していません。私は何かを逃したことがありますか?

読みやすくするための要点のコードは次のとおりです

https://gist.github.com/anonymous/bc0121ab23652513c2639a0aa55c4390

Jags_Yaram

はい、この種のコンポーネントが故障した場合は可能です(上面と側面のナビゲーション)。重要なことは、joyrideの「arrayOfSteps」を適切に構成することです。重要なのは、joyrideコンポーネントのステップの「selector」プロパティを構成することです。

たとえば、一連のステップは、上部と側面のナビゲーションタグを通過できます。何かのようなもの:

   {
  title: 'First Step',
  text: 'Start using the <strong>joyride</strong>',
  selector: '#first-top_menu',
  position: 'bottom-left',
  type: 'hover',
  isFixed: true,
  // optional styling
  style:{
   .....
    }
},
{
  title: 'Second Step',
  text: 'Start using the <strong>joyride</strong>',
  selector: '#second-top_menu',
  position: 'bottom-left',
  type: 'hover',
  isFixed: true,
  // optional styling
  style:{
   .....
    }
},
{
  title: 'Third Step',
  text: 'Start using the <strong>joyride</strong>',
  selector: '#first-side_menu',
  position: 'bottom-left',
  type: 'hover',
  isFixed: true,
  // optional styling
  style:{
   .....
    }
},

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数の子コンポーネントでReactコンポーネントをテストする方法は?

分類Dev

ReactJs-コンポーネントで複数の子を使用する方法

分類Dev

複数のサブミットを持つ子コンポーネントを持つ子コンポーネントを使用する React Redux-Form

分類Dev

複数のコンポーネントでHTMLを使用する

分類Dev

ES6を使用してReactの複数の子コンポーネントに関数を渡す

分類Dev

Reactの子コンポーネントで親関数を呼び出す

分類Dev

Reactの子コンポーネント間で通信する

分類Dev

複数の子コンポーネントの状態を操作する

分類Dev

複数の子コンポーネントからReactの1つの親コンポーネントに情報を送信します

分類Dev

同じ小道具値を取得する複数の子コンポーネント

分類Dev

複数のコンポーネントを使用したReact / Dropdownは、子アイテムを表示しません

分類Dev

複数のコンポーネント間でFormGroupを渡す

分類Dev

1つのコンポーネントで複数のコンポーネントを実行する

分類Dev

複数のコンポーネントがある場合にreactで特定の子refのメソッドを呼び出す

分類Dev

TypeScriptの子でforwardRefコンポーネントを使用する

分類Dev

reactjsの子コンポーネントに複数の状態値を渡す

分類Dev

React:関数コンポーネントでrefを使用する

分類Dev

ReactコンポーネントのJSのCSSでcalc関数を使用する

分類Dev

重複するコンポーネントでのReactコンポーネントの状態の問題

分類Dev

複数のコンポーネント間でReact.useCallback()関数を再利用する

分類Dev

複数の参照を子コンポーネントに渡します

分類Dev

React.js +1つのコンポーネントで複数のモーダルをReactstrapする

分類Dev

Reactで子コンポーネントを動的に追加する

分類Dev

Reactはコンポーネントに複数の引数を渡します

分類Dev

Reactでコンポーネントの子を動的に変更する

分類Dev

子コンポーネントReactから引数を渡す

分類Dev

複数の子コンポーネントの状態を更新するネイティブに反応する

分類Dev

GETリクエストのデータをreactで使用し、子コンポーネントで使用する

分類Dev

Vueで親から子コンポーネントに複数の小道具を渡す方法

Related 関連記事

  1. 1

    複数の子コンポーネントでReactコンポーネントをテストする方法は?

  2. 2

    ReactJs-コンポーネントで複数の子を使用する方法

  3. 3

    複数のサブミットを持つ子コンポーネントを持つ子コンポーネントを使用する React Redux-Form

  4. 4

    複数のコンポーネントでHTMLを使用する

  5. 5

    ES6を使用してReactの複数の子コンポーネントに関数を渡す

  6. 6

    Reactの子コンポーネントで親関数を呼び出す

  7. 7

    Reactの子コンポーネント間で通信する

  8. 8

    複数の子コンポーネントの状態を操作する

  9. 9

    複数の子コンポーネントからReactの1つの親コンポーネントに情報を送信します

  10. 10

    同じ小道具値を取得する複数の子コンポーネント

  11. 11

    複数のコンポーネントを使用したReact / Dropdownは、子アイテムを表示しません

  12. 12

    複数のコンポーネント間でFormGroupを渡す

  13. 13

    1つのコンポーネントで複数のコンポーネントを実行する

  14. 14

    複数のコンポーネントがある場合にreactで特定の子refのメソッドを呼び出す

  15. 15

    TypeScriptの子でforwardRefコンポーネントを使用する

  16. 16

    reactjsの子コンポーネントに複数の状態値を渡す

  17. 17

    React:関数コンポーネントでrefを使用する

  18. 18

    ReactコンポーネントのJSのCSSでcalc関数を使用する

  19. 19

    重複するコンポーネントでのReactコンポーネントの状態の問題

  20. 20

    複数のコンポーネント間でReact.useCallback()関数を再利用する

  21. 21

    複数の参照を子コンポーネントに渡します

  22. 22

    React.js +1つのコンポーネントで複数のモーダルをReactstrapする

  23. 23

    Reactで子コンポーネントを動的に追加する

  24. 24

    Reactはコンポーネントに複数の引数を渡します

  25. 25

    Reactでコンポーネントの子を動的に変更する

  26. 26

    子コンポーネントReactから引数を渡す

  27. 27

    複数の子コンポーネントの状態を更新するネイティブに反応する

  28. 28

    GETリクエストのデータをreactで使用し、子コンポーネントで使用する

  29. 29

    Vueで親から子コンポーネントに複数の小道具を渡す方法

ホットタグ

アーカイブ