小编ffx*_*sam的帖子

不能使用绝对路径导入?

忍受我,我不确定这是纯粹的React Native问题,还是一般的ES6问题.但我注意到我无法做到这一点:

import {navBarRouteMapper} from '/src/helpers';
Run Code Online (Sandbox Code Playgroud)

我收到错误,说它无法解析模块.我必须这样做:

import {navBarRouteMapper} from '../../../src/helpers';
Run Code Online (Sandbox Code Playgroud)

随着应用程序复杂性的增加,跟踪文件夹深度可能会变得有点难以管理.为什么我无法使用绝对路径?

编辑:

我看到有人建议添加babel,但我不想污染React Native的系统.很明显,ES6已经在进行中.我希望有一个特定于React Native生态系统的解决方案.

javascript react-native

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

React,Redux和Immutable

使用Reutable和React(以及可选的Redux)有什么好处?在Redux中,我可以简单地在我的reducers中使用rest来返回一个新状态:

const initialState = {
  activeTrackId: '',
  state: 'stopped',
};

export default function (state = initialState, action) {
  switch (action.type) {
    case actions.PROCESS_TRACK_ACTION:
      return {
        ...state,
        activeTrackId: action.state !== 'stopped' ? action.track._id : '',
        state: action.state,
      };
      // ...
Run Code Online (Sandbox Code Playgroud)

我发现它有用的唯一场景是:

shouldComponentUpdate(nextProps) {
  const oldProps = Immutable.fromJS(this.props);
  const newProps = Immutable.fromJS(nextProps);

  return !Immutable.is(oldProps, newProps);
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这甚至可能会误用它.

也许有人可以启发我在React和Redux的上下文中使用Immutable的优势?

reactjs immutable.js redux

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

mocha由于绝对路径不断轰炸

我在使用 Enzyme 和 Mocha 来测试我的 React 项目时遇到了很多麻烦。我有一个这样的测试:

import React from 'react';
import { expect } from 'chai';
import { shallow } from 'enzyme';

import { ChipInput} from '../client/components/Chips';

describe('<ChipInput />', _ => {
  it('rocks', done => {
    done();
  });
});
Run Code Online (Sandbox Code Playgroud)

ChipInput被导入时,该文件会导入一些具有绝对路径的内容,例如/lib/collections/tags,然后 Mocha 出错,因为它显然只执行相对路径。我如何让这个工作?

编辑:

实际错误:

Error: Cannot find module '/lib/collections/tags'
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为从/tests/ChipInput-test.js导入了ChipInput组件/client/components/Chips/index.js,其中包含以下几行:

import React from 'react';
import {
  MapsLocalOffer as TagIcon,
  ImageRemoveRedEye as InsightIcon,
  EditorInsertChart as TestIcon,
  SocialPerson as UserIcon,
} …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js ecmascript-6 enzyme

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

如何将MongoDB存档文件转换为JSON格式?

如果我像这样转储数据库:

mongodump --archive=out.mdb
Run Code Online (Sandbox Code Playgroud)

有什么方法可以转换out.mdb为平面JSON文件吗?如果是这样,怎么办?(例如,如果我只想还原一个文档)

mongodb mongodump

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

S3版本控制-为什么留下过期的删除标记?

我为版本化存储桶添加了生命周期规则,对此我感到困惑:

在此处输入图片说明

具体来说,“删除过期的对象删除标记”选项。一个为什么想要删除?如果我只有一个版本的对象,并且删除了该对象/版本,则五天后它将被永久删除。然后有一个删除标记指向任何内容,所以保留它的目的是什么?

amazon-s3 amazon-web-services

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

如何让VS Code建议道具和展示类型/描述?

我注意到当我安装第三方React软件包时,支持建议开箱即用:

在此输入图像描述

然而,当我创建自己的组件并在每个组件上面放置jsdoc样式注释时PropType,它不起作用.有什么方法可以将这些建议添加到我自己的组件中吗?

reactjs visual-studio-code

5
推荐指数
0
解决办法
248
查看次数

试图让正则表达式识别并从camelCase和CamelCase中提取单词

我已经中途工作了.这非常有效:

'MyOwnVar'.match(/([a-z]*)([A-Z][a-z]+)/g)
Run Code Online (Sandbox Code Playgroud)

结果:

["My", "Own", "Var"]
Run Code Online (Sandbox Code Playgroud)

目标是拉出单词.但是如果我将camelCase名称传递给它:

'myOwnVar'.match(/([a-z]*)([A-Z][a-z]+)/g)
Run Code Online (Sandbox Code Playgroud)

我明白了:

["myOwn", "Var"]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我做错了什么.据我所知,两组()应该将匹配结果存储在两个独立的数组元素中.出于某种原因,它们将它们混为一谈.

javascript regex

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

一次性从不可变列表中删除多个项目

鉴于这种:

state = Immutable.fromJS({
  selectedTrackIds: ['foo', 'bar', 'baz'],
});
Run Code Online (Sandbox Code Playgroud)

有没有办法selectedTrackIds使用单个语句(仅使用Immutable和普通JS)获取一个新的状态,其中'foo'和'baz'被删除?或者我只需要使用lodash?

return state.set('selectedTrackIds', Immutable.fromJS(_.difference(
  state.get('selectedTrackIds').toJSON(), ['foo', 'baz']
)));
Run Code Online (Sandbox Code Playgroud)

javascript immutable.js

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

无法从一个 TextInput 点按到另一个

当我专注于一个领域时TextInput,点击另一个TextInput领域并没有达到我所期望的(将焦点转移到那个领域TextInput)。

相反,它只是模糊了当前TextInput,需要第二次点击才能聚焦下一个TextInput

有没有办法做到这一点,或者这是React Native当前的缺点?

示例代码:

class MyTest extends Component {
  render() {
    return (
      <ScrollView style={styles.container}>
        <View>
          <TextInput style={styles.textInput} />
          <TextInput style={styles.textInput} />
        </View>
      </ScrollView>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#ddd',
    paddingTop: 64
  },
  textInput: {
    backgroundColor: '#fff',
    borderColor: '#000',
    borderWidth: 1,
    height: 46,
    paddingLeft: 10
  }
});
Run Code Online (Sandbox Code Playgroud)

事实证明,当输入字段在 ScrollView 中时,它们的行为与我上面描述的一样(您不能只是从一个字段点击到另一个字段)。我尝试将 TextInputs 包装在 View 中以解决此问题,但没有奏效。

ios react-native

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

如何通过管道传输到作为缓冲区而不是文件的 Node.js 流?

我到处寻找,所有的例子fs.createWriteStream都不是我想要的。

我正在使用该archiver包,并且想使用archive.pipe()管道传输到一个可写流,该流不是文件,而是一个缓冲区,我可以使用它发送s3.putObject到 S3 存储桶。如何设置可以通过管道传输到的缓冲区?

当我运行下面的代码时,我收到“错误:未实现”。

const stream = require('stream');
const archiver = require('archiver');

const archive = archiver('zip');
const outputStream = new stream.Writable();
outputStream.on('close', () => {
  console.log('done');
});
outputStream.on('error', err => {
  console.error(err);
});
archive.pipe(outputStream);
archive.append('Testing 1 2 3', { name: 'file1.txt' });
archive.finalize();
Run Code Online (Sandbox Code Playgroud)

buffer node.js node-streams

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