首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ExtReact中实现工具按钮的最大化操作?

如何在ExtReact中实现工具按钮的最大化操作?
EN

Stack Overflow用户
提问于 2018-03-30 08:39:03
回答 1查看 757关注 0票数 0

我试图在ExtReact中实现一个最大化工具按钮,但是我得到了一个

代码语言:javascript
复制
error: "Uncaught TypeError: n.up is not a function". 

下面是我当前实现此功能的方法:

代码语言:javascript
复制
{
    type: 'maximize',
    handler: function(e, target, panelHdr) {
        var panel = panelHdr.up('panel');
        if (!panel.maximized) {
            panel.restoreSize = panel.getSize();
            panel.restorePos = panel.getPosition(true);
            panel.maximized = true;
            var parent = panel.ownerCt,
                container = parent ? parent.getTargetEl() : panel.container,
                newBox = container.getViewSize(false);
            panel.setBox(newBox);
        } else {
            var newBox = panel.restoreSize;
            newBox.x = panel.restorePos[0];
            newBox.y = panel.restorePos[1];
            panel.maximized = false;
            panel.setBox(newBox);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 10:01:47

在工具处理程序的ExtReact中,第一个参数是

工具的逻辑所有者。在一个典型的用法中,这将是一个面板(如toolOwner配置所指定的),请参阅此handler

见下例:-

代码语言:javascript
复制
 {
     type: 'maximize',

     /* @param  {Ext.Component} owner The logical owner of the tool. In a typical usage this will be an Panel (as specified by the toolOwner config).
      * @param {Ext.Tool} tool The tool that is calling.
      * @param {Ext.event.Event} event The click event.
      */
     handler: function(owner, tool, event) {

     }
 }

您可以在这里看到最小化极大化的截图。

代码片段

代码语言:javascript
复制
import React, {
    Component
} from 'react';
import {
    Container,
    Panel,
    Button
} from '@extjs/ext-react';

Ext.require('Ext.Toast');

function toolHandler(panel, tool) {
    Ext.toast(`You clicked ${tool.config.type}`);
    if (tool.config.type=="maximize") {
        panel.setHeight(window.innerHeight).setWidth(window.innerWidth)
    }else{
         panel.setHeight(panel.initialConfig.height).setWidth(panel.initialConfig.width)
    }
}

export default class PanelExample extends Component {

    render() {
        return (
            <Container>
                <Panel
                    shadow
                    title="Panel"
                    height={300}
                    width={500}
                   // collapsible={{ dynamic: true }}
                    tools={[
                        {type: 'minimize', handler: toolHandler },
                        {type: 'maximize',handler: toolHandler  }
                    ]}
                >
                    <p>Panel Body</p>
                </Panel>
            </Container>
        )
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49571163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档