如何在nextjs中将数据从一个组件发送到另一个组件

时间:2019-09-18 09:25:33

标签: reactjs next.js antd

我在nextjs中工作。我有标头组件,为了在所有其他页面中显示标头,用_app.js覆盖了app.js。标头有2个导航链接usersList和users。 现在我想将数据从标题组件发送到另一个页面,即usersList和单击标题中的Submit的用户。我们如何实现这一点。 我知道我们可以使用上下文。我使用的是基于类的组件,不知道天气可以使用上下文。 还有其他解决方案吗? 请帮助

header.js
class HeaderComponent extends Component {
 onSearch(event){
       //some code
    }
    render() {
        return (
            <div className="navbar">

                          <Input id="search-input" className="text-box" placeholder="Enter name or Email.." onKeyDown={($event)=>this.onSearch($event)} prefix={<Icon type="search" onClick={()=>this.onSearch} ></Icon>}></Input>


            </div>
            )
        }
    }
    export default HeaderComponent

Layout.js

import React, { Component } from 'react';
import Header from './Header';

class Layout extends Component {
  render () {
    const { children } = this.props
    return (
      <div className='layout'>
        <Header />
        {children}
      </div>
    );
  }
}

_app.js

import React from 'react';
import App from 'next/app';
import Layout from '../components/Layout';

export default class MyApp extends App {
  render () {
    const { Component, pageProps } = this.props
    return (
      <Layout>
        <Component {...pageProps} />
      </Layout>
    )
  }
}

userList.js

class AppUser extends Component {
   render() {
       return (
           <Table
             rowKey={data._id}
             columns={this.columns1}

             onExpand={this.onExpand}
             dataSource={data} 
           />
       )
  }
}

编辑: 我们可以通过道具来实现吗

1 个答案:

答案 0 :(得分:0)

您可以使用ReactRedux创建商店,并使其可以从所有组件访问。

https://redux.js.org/api/store [1]