相关疑难解决方法(0)

React/JSX动态组件名称

我试图根据其类型动态呈现组件.

例如:

var type = "Example";
var ComponentName = type + "Component";
return <ComponentName />; 
// Returns <examplecomponent />  instead of <ExampleComponent />
Run Code Online (Sandbox Code Playgroud)

我尝试了这里提出的解决方案React/JSX动态组件名称

这在编译时给了我一个错误(使用browserify for gulp).它期望我使用数组语法的XML.

我可以通过为每个组件创建一个方法来解决这个问题:

newExampleComponent() {
    return <ExampleComponent />;
}

newComponent(type) {
    return this["new" + type + "Component"]();
}
Run Code Online (Sandbox Code Playgroud)

但这对我创建的每个组件都意味着一种新方法.必须有一个更优雅的解决方案来解决这个问题.

我对建议很开放.

javascript reactjs react-jsx

136
推荐指数
9
解决办法
9万
查看次数

什么是React组件'displayName'用于?

我知道通过添加属性命名react组件被认为是一种很好的做法displayName,但不确定我知道为什么.在反应文档中,它说:

displayName字符串用于调试消息.JSX自动设置该值; 请参阅深度中的JSX.

为什么这么重要?如果我不添加它将会发生什么?(到目前为止,我没有它,并没有调试问题)

是否有关于如何命名组件的任何建议/良好实践?

reactjs eslint

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

如何打印酶的浅包装纸的内容

我有以下内容:

import {shallow} from "enzyme" 

const wrapper = shallow(<SampleComponent/>);
Run Code Online (Sandbox Code Playgroud)

如何查看包装器的内容?

javascript reactjs enzyme

7
推荐指数
2
解决办法
2520
查看次数

酶-测试嵌套组件是否正确渲染

我试图测试通过简单的布尔值更新状态时,是否在父组件中正确渲染了其子组件。在父组件下面:

class Parent extends Component {
  ...
  render() {
    const { ..., isReady } = this.state;
    const props = { ... };

    return(
      <div className="container page-content">

        { isReady ?
          <Child {...props} />
          :
          <div id="loader-wrapper">
            <div id="loader"></div>
          </div>
        }

      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我的测试是:

beforeEach(() => {
      wrapper = mount(<Parent isReady={true}/>);
    });

it('Should render Child component', () => {
      expect(wrapper.prop('isReady')).to.equal(true); // Working !!
      expect(wrapper.find(Child).length).to.equal(1); // Not Working -> equal 0
    });
Run Code Online (Sandbox Code Playgroud)

到目前为止,我再次检查了状态是否正确更改,当我检查包装程序的isReady状态时,这似乎是正确的。我很确定这部分工作正常。

我也尝试了wrapper.html(),即使isReady为true,我的加载程序也只能看到div部分。<form>..</form>永远不会呈现应为a的Child组件。因此,如果我尝试类似的操作:expect(wrapper.find('form').length).to.equal(1);则两者都不起作用。我不明白为什么。

此处的最佳实践应该是什么,以测试我的父母行为并查看我的子组件是否正确呈现?

更新:

1 …

unit-testing meteor reactjs enzyme

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

标签 统计

reactjs ×4

enzyme ×2

javascript ×2

eslint ×1

meteor ×1

react-jsx ×1

unit-testing ×1