忍受我,我不确定这是纯粹的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生态系统的解决方案.
使用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的优势?
我在使用 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) 如果我像这样转储数据库:
mongodump --archive=out.mdb
Run Code Online (Sandbox Code Playgroud)
有什么方法可以转换out.mdb为平面JSON文件吗?如果是这样,怎么办?(例如,如果我只想还原一个文档)
我为版本化存储桶添加了生命周期规则,对此我感到困惑:
具体来说,“删除过期的对象删除标记”选项。一个为什么不想要删除?如果我只有一个版本的对象,并且删除了该对象/版本,则五天后它将被永久删除。然后有一个删除标记指向任何内容,所以保留它的目的是什么?
我注意到当我安装第三方React软件包时,支持建议开箱即用:
然而,当我创建自己的组件并在每个组件上面放置jsdoc样式注释时PropType,它不起作用.有什么方法可以将这些建议添加到我自己的组件中吗?
我已经中途工作了.这非常有效:
'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)
我无法弄清楚我做错了什么.据我所知,两组()应该将匹配结果存储在两个独立的数组元素中.出于某种原因,它们将它们混为一谈.
鉴于这种:
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) 当我专注于一个领域时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 中以解决此问题,但没有奏效。
我到处寻找,所有的例子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) javascript ×4
immutable.js ×2
react-native ×2
reactjs ×2
amazon-s3 ×1
buffer ×1
ecmascript-6 ×1
enzyme ×1
ios ×1
mocha.js ×1
mongodb ×1
mongodump ×1
node-streams ×1
node.js ×1
redux ×1
regex ×1