小编Ale*_*yne的帖子

使用 eslint Exclusive-deps 响应订阅/取消订阅的 useEffect 依赖项

我有一个useEffect钩子,它应该在组件出现时订阅地理定位更新,然后在组件消失时取消订阅。所以我[]作为效果依赖传递,因为我只希望它在挂载/卸载时运行。

import { useWatchPosition } from "@ionic/react-hooks/geolocation"
import React, { useEffect } from "react"

function SiteMap() {
  const { currentPosition, startWatch, clearWatch } = useWatchPosition()

  // Subscribe/Unsubscribe to geo location on component mount/unmount.
  useEffect(() => {
    startWatch()
    return clearWatch
  }, [])

  return <svg>{/* ... */}</svg>
}
Run Code Online (Sandbox Code Playgroud)

这导致 eslint 发出警告:

React Hook useEffect 缺少依赖项:clearWatchstartWatch. 包括它们或删除依赖项array.eslint(react-hooks/exhaustive-deps)

所以我把它改成了这样:

  useEffect(() => {
    startWatch()
    return clearWatch
  }, [startWatch, clearWatch])
Run Code Online (Sandbox Code Playgroud)

这会导致无限渲染循环。

我猜无限循环是由@ionic/react-hooks/geolocation每次useWatchPosition()调用时都会创建新函数的库引起的,使依赖项看起来过时。

所以我应该通过以下方式禁用对这一行的检查: …

javascript reactjs ionic-framework react-hooks

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

函数可以返回一个对象吗?Objective-C和NSMutableArray

我有一个NSMutableArray.它的成员最终成为类中数组实例的成员.我想将NSMutable的实例化放入一个函数中并返回一个数组对象.如果我能做到这一点,我可以让我的一些代码更容易阅读.这可能吗?

这是我想弄清楚的.

//Definition:
function Objects (float a, float b) {
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [array addObject:[NSNumber numberWithFloat:a]];
    [array addObject:[NSNumber numberWithFloat:b]];  
    //[release array]; ????????
    return array;
}

//Declaration:
 Math *operator = [[Math alloc] init];
    [operator findSum:Objects(20.0,30.0)];
Run Code Online (Sandbox Code Playgroud)

如果我在将消息发送到接收方之前实例化NSMutableArray,我的代码就会编译.我知道我可以有一个数组参数和方法.我遇到的问题是如何使用函数并用函数调用替换参数.任何帮助表示赞赏.我对这个概念感兴趣,而不是建议更换findSum方法.

oop class function objective-c nsmutablearray

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

如何获得方法的arity?

例如,在Javascript中,您可以通过简单地获取arity(函数应该采用的参数数量)func.length.如何获取Objective-C中方法的这些信息?

introspection objective-c

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

Javascript模块管理系统(dojo.require备选方案?)

人们用什么来处理javascript模块依赖?我一直在使用dojo.require()构建系统.到目前为止它还不错.但我只是想知道是否有其他选择?

Require.JS成为一个受欢迎的热门,但我觉得它太简陋了; 它只允许我在包装闭包块之前指定一个文件数组.告诉我,如果我弄错了,但这个数组是递归的吗?或者它只是一个级别.

谢谢!

javascript dojo requirejs

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

如果在此jquery代码中找到选择,如何停止/中断执行?

我在论坛上得到了你们这些代码的帮助,代码工作得很好,但是客户扔了一个曲线球.如果在此jquery代码中找到选择,如何停止/中断执行?他们希望为几个项目类型选择显示相同的字段集.但是,由于代码继续运行,如果出现相同的"sect_id",它将关闭FS.我如何处理中断,所以当找到匹配值时,它会停止搜索?

$('fieldset#section-841', 'fieldset#section-837' ).hide();
    var DM_projtype = new Array(
        {value : 'Direct Mail', sect_id : 'fieldset#section-841'},
        {value : 'Multiples2-92', sect_id : 'fieldset#section-837'},
        {value : 'Multiples10+', sect_id : 'fieldset#section-837'}
    );
    $('select#3596').on('change',function() {
        var thisValue = $(this).val();
        var sect_id = '';
        $(DM_projtype).each(function()
        {
           $(this.sect_id).hide();
           if(this.value == thisValue)
               $(this.sect_id).show();
       });

   });
)
Run Code Online (Sandbox Code Playgroud)

jquery

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

Javascript变量 - Getter问题

我想出了下面的情况:

function Dog () {
    "use strict";
    this.age = 1;
    var name = "Fido";
    this.getName = function () { return name; }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在创建一个"Dog"类的新实例并打印变量的值.

var d = new Dog;
document.write('<strong>Dog age:</strong> ' +d.age); \\Outputs "1" as expected
document.write('<br/>');
document.write('<strong>Dog name:</strong> ' +d.name); \\Outputs "undefined" as expected, 'cause it's a private variable.
document.write('<br/>');
document.write('<strong>Get Dog name:</strong> ' +d.getName()); \\Outputs "Fido", as expected.
Run Code Online (Sandbox Code Playgroud)

但是,假设我想改变Dog的名字,如下所示:

d.name = "Stinky";
document.write('<br/>');
document.write('<strong>Dog name Again:</strong> ' +d.name); 
document.write('<br/>');
document.write('<strong>Get Dog name Again:</strong> ' +d.getName());
Run Code Online (Sandbox Code Playgroud)

基于此,我提出了几个问题:

  1. 为什么在地球上"d.name"没有向我显示"未定义"?"名称"不是私有变量吗?我想你不能改变私有变量值,对吗?我想知道这个过程是否创建了一个新变量,但这次是一个公共变量,并且具有相同的名称.如果是这样,每次我尝试分配一个具有相同名称的新属性时,是否有办法阻止创建新变量?有没有办法抛出"类型错误"或其他东西(嗯,这是我的预期). …

javascript variables getter private

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

如何将json/object转换为数组进行循环

我有一个javascript应用程序,它调用api,api返回json.使用json,我选择一个特定的对象,然后遍历它.

我的代码流是这样的:服务调用 - > GetResults循环结果和构建页面

但问题是,有时api只返回一个结果,这意味着它返回一个对象而不是一个数组,所以我不能循环遍历结果.最好的办法是什么?

我应该将我的对象或单个结果转换为arrary吗?把它/推入阵列?或者我应该做一个typeof并检查元素是否是一个数组,然后进行循环?

谢谢您的帮助.

//this is what is return when there are more than one results
var results = {
pages:  [
        {"pageNumber":204},
        {"pageNumber":1024},
        {"pageNumber":3012}
    ]
}

//this is what is returned when there is only one result
var results = {
    pages: {"pageNumber": 105}
}
Run Code Online (Sandbox Code Playgroud)

我的代码循环遍历结果,仅使用for循环,但它会产生错误,因为有时结果不是数组.那么,我再次检查它是否是一个数组?将结果推送到新阵列?什么会更好.谢谢

javascript arrays json object

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

用C++管理二进制数据的缓冲区

我正在尝试创建一个简单的二进制格式,通过Arduino上的BlueToothLE模块进行传输.我正在尝试描述对象列表的属性.对于初学者,我试图传输一个属性.

我试图编码和传递的格式如下.

namePropertyID, nameLength, nameString...
Run Code Online (Sandbox Code Playgroud)

所以给了一个名字"鲍勃"

0x01     0x03     0x42 0x6F 0x62
nameID   3 chars  "B"  "o"  "b"
Run Code Online (Sandbox Code Playgroud)

但是当我通过缓冲区时,它似乎是变异的.

在我通过它之前,它写道:

0x01 0x03 0x42 0x6F 0x62
Run Code Online (Sandbox Code Playgroud)

但在我通过之后,它写道:

0x00 0x3C 0x18 0x04 0x00
Run Code Online (Sandbox Code Playgroud)

Program.h

typedef enum {
  InfoTypeName = 0x01
} InfoType;

class Program {
  public:
    char *name;

    uint8_t * data();
    uint8_t dataLen();
};
Run Code Online (Sandbox Code Playgroud)

Program.cpp

#include "Program.h"

uint8_t* Program::data() {
  uint8_t nameLength = strlen(name);
  uint8_t buff[dataLen()];

  buff[0] = InfoTypeName;
  buff[1] = nameLength;

  for (uint8_t i = 0; i < nameLength; i++) {
    buff[i+2] …
Run Code Online (Sandbox Code Playgroud)

c++ binary buffer arduino

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

如何在 Typescript 中使用 React 组件中的默认 props?

我是 React 新手,我有一个简单的子组件。我想设置默认道具,因此如果在调用组件时没有给出道具,它将使用默认设置的任何内容。到目前为止我有:

import React from 'react';

interface titleComponentProps {
  title?: string;
}

const titleComponentDefaults = ({
  title: "default title",
})

const titleComponent = ({
  title,
}: titleComponentProps) => {
  return <React.Fragment>{title}</React.Fragment>;
};

export default DynamicHelperText;
Run Code Online (Sandbox Code Playgroud)

我不清楚如何让默认道具出现在组件中。有人知道最好的方法吗?

typescript reactjs

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

获取可为空数组中的第一个对象

我有一个像这样的数组:

episodes?: Episode[];
Run Code Online (Sandbox Code Playgroud)

在一个函数中,我想获取该数组中的第一个对象。我已经尝试过以下方法:

let episode: Episode = this.episodes?[0];
Run Code Online (Sandbox Code Playgroud)

或者

var episode = this.episodes?[0];
Run Code Online (Sandbox Code Playgroud)

然而,这两个都会给出以下错误:

错误:src/app/episodes/episodes.component.ts:30:45 - 错误 TS1005:预期为“:”。

如何从该数组中获取项目?

typescript angular

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