小编Jac*_*chi的帖子

制作一个不可点击的菜单项

我正在Dropdown使用 Ant Design 制作菜单:

import React, { Component } from "react";
import { Icon, Dropdown, Menu } from "antd";
const { Item } = Menu;

class NotificationBell extends Component {
    render() {
        const menu = (
            <Menu>
                <Item><p>You must be connected to get notifications.</p></Item>
            </Menu>
        );
        return (
            <Dropdown overlay={menu} trigger={['click']}>
                <Icon type="bell" theme="outlined" />
            </Dropdown>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

Ant 设计下拉菜单

但我不想只删除突出显示,我还想让组件不可点击,即我想要一个“普通光标”而不是“手形光标”。

按照Ant Design 文档的selectable={false}建议在组件上添加prop没有帮助。我应该怎么办?Menu

感谢您的帮助。

css drop-down-menu reactjs antd

8
推荐指数
2
解决办法
7943
查看次数

没有setState修改状态的风险是什么?

我知道直接修改状态而setState(...)不会自动更新UI,但我仍然可以这样做:

this.state.myValue = "foo";
this.forceUpdate();
Run Code Online (Sandbox Code Playgroud)

我也知道React等待某些时刻在一次通过中更新几个组件,但是有没有令人信服的理由为什么我不应该直接改变状态setState(...)

有两种情况直接改变状态对我有益:

  • 如果我必须修改一个非常长的数组的元素,setState(...)那么与每次复制整个数组的非浅的性能增益相比,"集群更新" 的性能增益可以忽略不计.

  • 如果我在状态的2个不同属性中有2个对同一对象的引用,并且我想修改此对象,我宁愿对单个属性进行此修改,但如果我使用setState(...),则会复制该对象并丢失引用.

谢谢您的帮助.

javascript reactjs

6
推荐指数
1
解决办法
89
查看次数

Eloquent:带时间戳的默认值无效

这是我的迁移架构:

public function up()
{
    Schema::create('objects', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamp('timestamp1');
        $table->timestamp('timestamp2');
    });
}
Run Code Online (Sandbox Code Playgroud)

但是当我执行时php artisan migrate,我收到此错误:

Illuminate\Database\QueryException : SQLSTATE[42000]: 语法错误或访问冲突:1067 'timestamp2' 的默认值无效(SQL:创建表objectsidint unsigned not null auto_increment 主键,timestamp1timestamp not null,timestamp2timestamp not null)默认字符集utf8mb4 整理 utf8mb4_unicode_ci)

我必须指出,当我删除 2$table->timestamp(...);行之一时,它可以工作,但当两者都存在时就不行。而Object.php模型是空的,因为它可以。我做错了吗?

我已经阅读了这篇文章,但即使我更改timestamp(...)为时不再有错误dateTime(...),我也只想要时间戳。

php laravel eloquent sql-timestamp

5
推荐指数
1
解决办法
4408
查看次数

Laravel:正确覆盖 SoftDeletes 特征

我想制作一个使用SoftDeletes命名的特征SoftDeletesWithStatus,它也会更新状态列。我的问题是我想在 的函数中间实现我的代码,SoftDeletes如下所示:

protected function runSoftDelete() {
    $query = $this->newQueryWithoutScopes()->where($this->getKeyName(), $this->getKey());
    $time = $this->freshTimestamp();
    $columns = [$this->getDeletedAtColumn() => $this->fromDateTime($time)];

   //I want to implement my code here

    $this->{$this->getDeletedAtColumn()} = $time;
    if ($this->timestamps && ! is_null($this->getUpdatedAtColumn())) {
        $this->{$this->getUpdatedAtColumn()} = $time;
        $columns[$this->getUpdatedAtColumn()] = $this->fromDateTime($time);
    }
    $query->update($columns);
}

public function restore() {
    if ($this->fireModelEvent('restoring') === false) {
        return false;
    }
    $this->{$this->getDeletedAtColumn()} = null;

    //I want to implement my code here

    $this->exists = true;
    $result = $this->save();
    $this->fireModelEvent('restored', false);
    return …
Run Code Online (Sandbox Code Playgroud)

php soft-delete laravel

5
推荐指数
1
解决办法
4105
查看次数

以编程方式将 XML 声明添加到 XML 文档

我想将声明添加到用 Javascript 生成的 XML 文档中,但我没有找到足够的文档。

假设我想以编程方式(使用 Javascript)创建以下 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<people>
  <person first-name="eric" last-name="jung" />
</people>
Run Code Online (Sandbox Code Playgroud)

这是我所做的代码:

let doc = document.implementation.createDocument("", "", null);
let peopleElem = doc.createElement("people");

let personElem = doc.createElement("person");
personElem.setAttribute("first-name", "eric");
personElem.setAttribute("last-name", "jung");

peopleElem.appendChild(personElem);
doc.appendChild(peopleElem);

let docStr = new XMLSerializer().serializeToString(doc.documentElement);
console.log(docStr);

// produces:
// <people>
//   <person first-name="eric" last-name="jung" />
// </people>

// and not:
// <?xml version="1.0" encoding="UTF-8"?>
// <people>
//   <person first-name="eric" last-name="jung" />
// </people>
Run Code Online (Sandbox Code Playgroud)

我应该如何获取<?xml version="1.0" encoding="UTF-8"?>生成的 XML 中的 ? …

javascript xml xml-declaration

4
推荐指数
1
解决办法
1779
查看次数

Laravel:以UTF-8编码JSON响应

我想将我的API的JSON响应编码为UTF-8,但是每次我做出响应时,我都不想这样做:

return response()->json($res,200,['Content-type'=>'application/json;charset=utf-8'],JSON_UNESCAPED_UNICODE);
Run Code Online (Sandbox Code Playgroud)

因此,我考虑为所有API路由制作中间件,其handle(...)功能如下:

public function handle($request, Closure $next) {
    $response = $next($request);
    $response->header('Content-type','application/json; charset=utf-8');
    return $next($request);
}
Run Code Online (Sandbox Code Playgroud)

问题是它不起作用Content-type,我的响应的标头仍然是,application/json而不是application/json; charset=utf-8;可能是因为该json(...)函数已经设置了Content-type标头,但我无法覆盖它。

我应该怎么做?

谢谢您的帮助。

json utf-8 laravel laravel-middleware

3
推荐指数
1
解决办法
4067
查看次数

在Chrome 71+上激活触摸事件

我想在Chrome上激活触摸事件,以方便对使用touchstarttouchend事件的应用进行调试。

这篇文章似乎有点过时了,因为Overrides在开发人员设置上(无论是在Chrome上还是在Chrome Developer上),我都无法获取菜单。这是我在Chrome Dev 73上得到的:

设定

我已经在设置中进行了彻底搜索,但没有看到此复选框。我还没有最新的教程可以激活它们。我能怎么做?

谢谢您的帮助。

javascript html5 google-chrome touch

3
推荐指数
1
解决办法
3267
查看次数

隐藏 &lt;textarea&gt; 的一角

在 Firefox 上(至少),当我们禁用 textarea 的边框时,它的右下角仍然可见。我们怎样才能删除它?

textarea:focus {
  outline: solid;
}

textarea {
  border: none;
}
Run Code Online (Sandbox Code Playgroud)
<textarea>Hello</textarea>
Run Code Online (Sandbox Code Playgroud)

css textarea

2
推荐指数
1
解决办法
1400
查看次数

覆盖 Antd 选择的 Item 颜色

我想覆盖类的background-color属性ant-menu-item-selected。默认情况下它显示为蓝色。

import { Menu } from 'antd';
const { Item } = Menu;

//item2 will be rendered with the class 'ant-menu-item-selected'
const MyComp = () => (
  <Menu theme="dark" defaultSelectedKeys={["item2"]} mode="horizontal">
    <Item key="item1">Item 1</Item>
    <Item key="item2">Item 2</Item>
  </Menu>
);

ReactDOM.render(<MyComp />,document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

我应该怎么做?

感谢您的帮助。

css reactjs antd

2
推荐指数
1
解决办法
1万
查看次数

在 TypeScript 中返回多个值

我想在 TypeScript 函数的 return 语句中返回多个值。在 JavaScript 中执行此操作的标准方法是返回包含值 ( source )的数组,但是,由于我想要返回的值具有不同类型,因此在编译期间出现错误:

function fun() {
    return ['hello', 1];
}

let [a, b] = fun();
console.log(a.substring(1));
Run Code Online (Sandbox Code Playgroud)

错误:

test.ts:6:15 - error TS2339: Property 'substring' does not exist on type 'string | number'.
  Property 'substring' does not exist on type 'number'.

6 console.log(a.substring(1));
                ~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

这个怎么做?

感谢您的帮助。

return-type typechecking typescript

2
推荐指数
1
解决办法
7056
查看次数