小编Jan*_*art的帖子

我应该在C++中使用std :: function还是函数指针?

在C++中实现回调函数时,我是否还应该使用C风格的函数指针:

void (*callbackFunc)(int);
Run Code Online (Sandbox Code Playgroud)

或者我应该使用std :: function:

std::function< void(int) > callbackFunc;
Run Code Online (Sandbox Code Playgroud)

c++ function std callback c++11

128
推荐指数
4
解决办法
5万
查看次数

在JSX中添加空格时的最佳实践

我理解如何(以及为什么)在JSX中添加空格,但我想知道什么是最佳实践或者是否有任何真正的区别?

将两个元素包裹在一个范围内

<div className="top-element-formatting">
  <span>Hello </span>
  <span className="second-word-formatting">World!</span>
</div>
Run Code Online (Sandbox Code Playgroud)

将它们添加到一行

  <div className="top-element-formatting">
    Hello <span className="second-word-formatting">World!</span>
  </div>
Run Code Online (Sandbox Code Playgroud)

用JS添加空间

<div className="top-element-formatting">
    Hello {" "}
    <span className="second-word-formatting">World!</span>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-jsx

54
推荐指数
7
解决办法
6万
查看次数

单击轨道时,输入范围滑块在iOS Safari上不起作用

我有一个非常直接的范围输入滑块.除iOS OS外,它在所有浏览器上运行良好.

我遇到的主要问题是当我点击滑块轨道时,它不会移动滑块.它只是突出显示滑块.拖动拇指时效果很好.有想法该怎么解决这个吗?

<div class="slider-wrap">
    <div id="subtractBtn"></div>
    <input type="range" class="slider">
    <div id="addBtn"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

html5 mobile-safari ios

46
推荐指数
1
解决办法
8333
查看次数

Chrome网络应用清单:显示类型之间的差异

当创建的Chrome网络应用程序清单,你可以指定你displayfullscreen,standalone,minimal-ui或者browser

之间有什么区别fullscreenstandalone什么时候应该使用哪一个?它们看起来和我很相似.

html5 google-chrome manifest

12
推荐指数
1
解决办法
3544
查看次数

使用功能JavaScript将数组拆分为两个不同的数组

我想知道使用JavaScript将数组拆分成两个不同数组的最佳方法是什么,但要将其保留在函数式编程领域.

假设应该根据某些逻辑创建两个数组.例如,拆分一个数组应该只包含少于四个字符的字符串,另一个包含其余字符串.

const arr = ['horse', 'elephant', 'dog', 'crocodile', 'cat'];
Run Code Online (Sandbox Code Playgroud)

我考虑过不同的方法:

过滤:

const lessThanFour = arr.filter((animal) => {
    return animal.length < 4;
});
const fourAndMore = arr.filter((animal) => {
    return animal.length >= 4;
});
Run Code Online (Sandbox Code Playgroud)

对我来说这个问题是你必须两次检查你的数据,但它是非常易读的.如果你有一个相当大的阵列,会有两次这样的巨大影响吗?

减少:

const threeFourArr = arr.reduce((animArr, animal) => {
  if (animal.length < 4) {
    return [[...animArr[0], animal], animArr[1]];
  } else {
    return  [animArr[0], [...animArr[1], animal]];
  }
}, [[], []]);
Run Code Online (Sandbox Code Playgroud)

数组的0索引包含少于4的数组,1索引包含多于3的数组.

我不太喜欢这个,因为看起来数据结构会带来一些问题,因为它是一个数组数组.我曾考虑使用reduce构建一个对象,但我无法想象它会比数组解决方案中的数组更好.

我已经设法在线查看类似的问题以及Stack Overflow,但是其中许多通过使用push()或者它们具有非常难以理解的实现来打破不可变性的想法,在我看来这打破了函数式编程的表现力.

有没有其他方法可以做到这一点?(功能当然)

javascript arrays reduce functional-programming

10
推荐指数
3
解决办法
4206
查看次数

应该由Promise调用同步代码.然后创建一个新的Promise

我已经实现了一些代码,其中异步代码后跟一些同步函数.例如:

function processSomeAsyncData() {
  asyncFuncCall()
    .then(syncFunction)
    .catch(error);
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确then也是一个承诺.我是否应该在同步代码中创建一个承诺?

function syncFunction() {
  const p = new Promise (function (resolve, reject) {
    //Do some sync stuff
    ...
    resolve(data);
  }
  return p;
}
Run Code Online (Sandbox Code Playgroud)

如果没有必要,如果发生错误,如何拒绝同步代码中的承诺?

javascript node.js es6-promise

9
推荐指数
2
解决办法
4706
查看次数

Android Chrome浏览器覆盖了覆盖输入字段的网页上的软键盘

我在HTML5应用程序上遇到此问题.它适用于iOS上的Safari和Chrome,但问题出现在Android设备上.

每当显示带有输入字段的表单并尝试输入任何详细信息时,软键盘将覆盖字段,而不是将其向上移动.在像手机这样的小型设备上,无法看到您输入的内容.

我需要补充的是,在全屏模式下运行添加到主屏幕的应用时,情况会更糟.键盘只是覆盖了一切.

我已经在网上尝试过每一个"解决方案",但无济于事.请注意,这不适用于原生应用,而是适用于在线网站.

提前致谢.

javascript css html5 android ios

7
推荐指数
0
解决办法
1223
查看次数

将内存中的二进制数据读入字符串流并通过套接字流式传输

例如,我想知道是否可以在内存中获取一段数据,将其读入输出字符串流(作为二进制数据)并将其写入套接字以供客户端应用程序处理。

我在尝试此操作时遇到的问题如下:

例子:

char name[1024] = "Test";
std::ostringstream message (std::stringstream::out | std::stringstream::binary);

len = strlen(name);
message.write(reinterpret_cast<const char*>(&len), sizeof(int));
message.write(test, len*sizeof(char));
Run Code Online (Sandbox Code Playgroud)

我想将此字符串流写入套接字,其中包含所有数据,但问题是这样的:字符串流写入仅执行第一次,在本例中写入 4(字符串的长度),并且后续写入均不执行。我在这里错过了什么吗?

如果这不是最好的方法,那么实现这一目标的最佳方法是什么?这在一定程度上是为了减少缓存内存快照的文件 I/O。

提前致谢..

c++ memorystream ostringstream

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

使用Storyshots渲染React Portal时出错

我正在尝试使用门户来渲染模式,它在我的应用程序以及Storybook中都可以正常工作,但是一旦将其添加到Storyshots中,我就会遇到问题。

第一个问题是模拟ReactDOM的createPortal API。我这样做:

ReactDOM.createPortal = element => element;

如果未添加,则会出现以下错误:

错误:未被捕获[TypeError:parentInstance.children.indexOf不是一个函数]

我发现此解决方案React Portal Error

这解决了此问题,但是当组件使用门户网站时,尝试附加子项时失败。它找不到'modal-root'组件,因此无法附加该元素。我不确定该如何解决。

我的门户网站与React网站上的示例几乎相同:

import React from 'react';
import { createPortal } from 'react-dom';
import { node } from 'prop-types';

class Portal extends React.Component {
  constructor(props) {
    super(props);
    this.el = document.createElement('div');
  }

  componentDidMount() {
    // !!!!!!!fails here !!!!!!!!!
    document.getElementById('modal-root').appendChild(this.el);
  }

  componentWillUnmount() {
    document.getElementById('modal-root').removeChild(this.el);
  }

  render() {
    return createPortal(this.props.children, this.el);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在它因以下错误而失败:

错误:未被捕获[TypeError:无法读取null的属性'appendChild'

上面的代码段中指示的位置。

reactjs jestjs storybook storyshots

5
推荐指数
2
解决办法
1094
查看次数

删除:: before伪选择器之前添加的元素

我有以下情况:(样式在SASS中完成,省略了不必要的样式.)

.header {
  ...
  &::before {
    ...
    position: absolute;
    height: 0.5rem;
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

这会在应用程序的菜单栏顶部创建一个栏.在某些情况下,必须删除此栏.我读过这些问题,但没有成功.删除:: before选择器添加的这个栏的最佳方法是什么?

html javascript css jquery

4
推荐指数
2
解决办法
8175
查看次数

搜索通过unique_ptr的向量搜索的find函数的返回值

我正在搜索对象的unique_ptr向量.例如,通过用户输入名称来解析该对象.因此,这种类型的功能:

std::unique_ptr<obj> const& objectForName(std::string name) {
    std::vector<std::unique_ptr<obj>>::iterator it;
    it = std::find_if(objVec.begin(), objVec.end(), [name](const std::unique_ptr<obj>& object) -> bool {return object->getName() == name; });
    if (it != objVec.end())
      return *it;
    else
      throw(Some_Exception("Exception message"));
}
Run Code Online (Sandbox Code Playgroud)

我想在向此向量添加对象的情况下重用此函数.函数应调用此函数,并且在未找到它的情况下返回可由调用函数检查的内容,而不是抛出异常.调用函数可以在检查返回值时抛出异常.我的问题是可以返回什么可以检查调用函数?

c++ iterator vector unique-ptr c++11

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

使用 Redux Form 处理数字输入会做一些奇怪的事情

https://redux-form.com/7.2.1/examples/fieldlevelvalidation/上的 age 字段为例。

您可以输入数字、+、- 和 e。像下面这样:

在此处输入图片说明

但看起来 Redux Form 无法识别这些输入。如果您尝试使用 parse 或 normalize 生命周期方法,则该值会显示为 ''。

同样在屏幕截图中,验证表明该字段是必需的,就好像它是空的一样。

有没有办法处理这些?

html reactjs redux redux-form

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

How to remove null values in list of objects using Circe

I'm trying to encode a list of objects using Circe, something that looks similar to:

val test = Seq(MyObject("hello", None, 1, 2, None)

I'm trying to parse this using Circe:

test.asJson

But this creates the JSON object:

[
  {
    name: "hello",
    someVal: null,
    someNum: 1,
    anotherNum: 2,
    anotherVal: null
  }
]
Run Code Online (Sandbox Code Playgroud)

I've tried running asJson with .dropNullValues, but that doesn't seem to access the null values inside of the object. Is there a way to drop the null values …

scala circe

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