react 使用antd导航组件实现事件传递并局部刷新DOM

react

我们要实现一个通过点击顶部导航来查询左侧菜单的一个功能

在这个功能中,我们要应用到onClick={this.headNavMenuList.bind(this)}方法来传递点击 不同按钮来传递不同的值 

注意:如果 我们要在后续事件中使用传递过来的参数来更新局部DOM,则可以不加.bind(this),否则会报出警告

adtd中的事件与常用的事件略有不同,是在父层窗口上绑定事件,通过相同的key值来实现不同的数据传递

onClick={this.headNavMenuList.bind(this)}

<Menu  mode="horizontal" selectedKeys={[]} onClick={this.headNavMenuList.bind(this)}>

参数mode表示排列方式,selectedKeys的值就和<Menu.Item key="">的key值相同时,该<Menu.Item key="">就是选中状态,

onClick事件函数的参数表示事件源,即点击哪个菜单元素,e就表示哪个菜单元素

我们通过.bind(this)来绑定子元素的key值 来达到点击 不同按钮效果

然后通过this.setState()方法来重新对元素赋值并更新DOM

let Page = React.createClass({

mixins: [LoadingMixin,NotificationMixin,RequestMixin],

getInitialState() {

let userInfo = LocalService.getUserInfo() && JSON.parse(LocalService.getUserInfo()) || {};

return {

routes: [],

modules: modules || [],

curSelectedMenuKey: [],

userInfo: userInfo,

openKeys: [],

prolist:prolist,

headNav:[{number:"1",name:"iframe"},{number:"2",name:"itable"},{number:"3",name:"home"}],

}

},

headNavMenuList(e){

let prolistId = e.key;

this.get({

url: "Api/search/module/menu/key/dac509bd90a231239291e12c24a6f1af4bac",

param: {

proid: prolistId,

userid:this.state.userInfo.id

},

noLoading: true

}).then(result=> {

this.setState({modules: result.result || []});

// callback && callback(result.result || []);

})

},

render(){

return (

<div className="app-main">

<div className="app-header">

<div className="header-title" >管理后台</div>

<Menu

theme="dark"

mode="horizontal"

defaultSelectedKeys={['1']}

style={{ lineHeight: '64px' }}

onClick={this.headNavMenuList}

>

{

this.state.headNav && this.state.headNav.map((items,index) =>{

for(let i=0;i<prolist.prolist.length;i++){

if(prolist.prolist[i] == items.number){

return (

<Menu.Item key={prolist.prolist[i]} >{items.name}</Menu.Item>

)

}

}

})

}

</Menu>

</div>

div className="app-wrap">

<div className="nav-sider" >

<Menu

mode="inline"

selectedKeys={this.state.curSelectedMenuKey}

openKeys={this.state.openKeys}

onOpenChange= {this.onOpenChange}

style={{ height: '100%', borderRight: 0 }}

onClick={this.handleMenuItemClick}

className="scroll"

>

{

this.state.modules && this.state.modules.map((subItem,index) => {

if (subItem.hasChildren) {

return (

<SubMenu key={subItem.id} title={subItem.title} >

{

subItem.children && subItem.children.map((item,j) => {

return (

<Menu.Item key={item.id} onClick={this.handleMenuItemClick}>{item.title}</Menu.Item>

)

})

}

</SubMenu>

)

}

else {

return (

<Menu.Item key={subItem.id} >{subItem.title}</Menu.Item>

)

}

})

}

</Menu>

</div>

)

}

以上是 react 使用antd导航组件实现事件传递并局部刷新DOM 的全部内容, 来源链接: utcz.com/z/383284.html

回到顶部