小编bit*_*eam的帖子

React Tutorial:TypeError:无法读取未定义的属性'props'

我决定学习React并开始使用官方教程.一切都很好,直到我达到我的代码状态:

var CommentBox = React.createClass({
  render: () => {
    return (
      <div className="commentBox">
        <h1> Comments </h1>
        <CommentList />
        <CommentForm />
      </div>
    );
  }
});

var CommentForm = React.createClass({
  render: () => {
    return (
      <div className="commentForm">
        Hello, world! I am a comment form;
      </div>
    );
  }
});

var Comment = React.createClass({
  rawMarkup: () => {
    var rawMarkup = marked(this.props.children.toString(), {sanitize: true});
    return {__html: rawMarkup};
  },

  render: () => {
    return (
      <div className="comment">
        <h2 className="commentAuthor">
          {this.props.author}
        </h2> // <--- [[[[[[ …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

React shouldComponentUpdate()= false不停止重新渲染

基本上,我有这个非常简单的反应组件.它的作用是环绕'react-intercom',只有在状态发生变化时才会渲染它.为了简化问题,我已经将该shouldCompoenentUpdate()方法硬连接以始终返回false.

    import React from 'react';
    import Intercom from 'react-intercom';
    
    class IntercomWrapper extends React.Component {
        shouldComponentUpdate(nextProps, nextState) {
            // console.log(!!nextProps.user && nextProps.user.userId !== this.props.user.userId);
            // return !!nextProps.user && nextProps.user.userId !== this.props.user.userId;
            return false;
        }
    
        render() {
            console.log('rendering');
            return <Intercom {...this.props} />;
        }
    };
    
    export default IntercomWrapper;
Run Code Online (Sandbox Code Playgroud)

会发生什么事情,它总是会重新渲染,这不应该发生.

任何人都知道为什么会发生这种情况?

javascript reactjs

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

Vim:<leader> h映射速度慢

我对vimscript不太满意,但我想在Vim中做一些自定义映射.我想要做的是映射<leader>h切换到上一个选项卡,但当我按下<leader>h,它正在等待另一个键,并且不会快速切换.有没有办法看到哪些映射以"h"键开头并取消映射?或者也许是另一种更优雅的解决方案

谢谢,H.

vim

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

使用“react-leaflet”新 useLeaflet() 钩子的示例?

我正在尝试使用钩子获取对传单对象的引用,因此我可以查询不同事件(如 Map.getBoundaries())上的新地图边界。我很新reac-leaflet,这种方法可能完全错误,但这是我现在所拥有的......

我想要做的是获取每个moveend事件的地图边界,如果这有帮助的话......

leaflet reactjs react-leaflet

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

编译好所有文件后的Gulp Livereload?

我有一个问题,我认为可能对很多人来说很常见,但似乎我不对.所以我希望有人可以提供帮助,因为我无法在Gulp文件中找到答案.

现在我的gulpfile.js有以下内容:

'use strict';

var gulp = require('gulp');
var jade = require('gulp-jade');
var gutil = require('gulp-util');
var stylus = require('gulp-stylus');
var jeet = require('jeet');
var nib = require('nib');
var uglify = require('gulp-uglify');
var livereload = require('gulp-livereload');

var sources = {
  jade: "jade/**/*.jade",
  partials: "partials/**/*.jade",
  stylus: "styl/**/*.styl",
  scripts: "js/**/*.js"
};

// Define destinations object

var destinations = {
  html: "dist/",
  css: "dist/css",
  js: "dist/js"
};

// Compile and copy Jade
gulp.task("jade", function(event) {
  return gulp.src(sources.jade)
  .pipe(jade({pretty: true}))
  .pipe(gulp.dest(destinations.html))
});

// Compile …
Run Code Online (Sandbox Code Playgroud)

javascript synchronous gulp

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

在 Jest 中动态生成测试

我正在寻找一种在 Jest 中生成测试并运行它们的方法。我正在测试一个 API,测试用例是从 CSV 文件导入的,从中生成测试。

目前我得到的是一组参数,我想从中生成测试并运行它们。这就是我看到它的工作方式:

let testFn =  (testName, request, expected) => it(test.testName, (request, expected) => {
    return new Promise((resolve, reject) => {
        http.post(request, (err, res) => {
            if (err) {
                reject(err);
            } else {
                resolve(res);
            }
        })
    }).then((res) => {
        expect(res.result).toBe(expected['result']);
        return response;
    })
});
Run Code Online (Sandbox Code Playgroud)

上面的代码是我的测试功能。在我看来,应该调用它来执行测试。它根据 3 个参数生成测试:

  • testName 他是测试的名称,在控制台中显示
  • request 是发送到 API 的请求
  • expected 是预期的结果。

结构总是相同的:res.result应该是参数中的任何内容expect

我从 CSV 获得的带有测试的数组元素的示例是:

const oneTest = {
    testName: 'the request should return 10',
    request: {
        input: …
Run Code Online (Sandbox Code Playgroud)

javascript testing code-generation jestjs

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

我可以设置gulp livereload在所有文件编译后运行吗?

我已经准备好与Stylus,Jade和tiny-lr合作.我的问题是,当我保存一个玉文件时,它开始编译它们全部,因此在我正在处理的文件编译之前,在第一个复制到目标的文件上重新加载火,导致我必须手动刷新.我已经使用"gulp-changed"解决了这个问题,但我似乎无法配置它或其他东西.以前有人有这个问题吗?我发布了我的Gulp文件,所以你可以看看.

可以在此处找到问题的时间线图:https://www.dropbox.com/s/3g37oy25s9mq969/jade_compile_frefresh_problem.png?dl = 0

任何帮助表示赞赏!

    'use strict';

    var gulp = require('gulp');
    var jade = require('gulp-jade');
    var gutil = require('gulp-util');
    var stylus = require('gulp-stylus');
    var jeet = require('jeet');
    var nib = require('nib');
    var uglify = require('gulp-uglify');
    var lr = require('tiny-lr')();
    // var mainBowerFiles = require('main-bower-files');

    // Define sources object
    var sources = {
      jade: "jade/**/*.jade",
      partials: "partials/**/*.jade",
      stylus: "styl/**/*.styl",
      scripts: "js/**/*.js"
    };

    // Define destinations object

    var destinations = {
      html: "dist/",
      css: "dist/css",
      js: "dist/js"
    };

    // …
Run Code Online (Sandbox Code Playgroud)

javascript stylus gulp pug

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