小编cod*_*ter的帖子

svg <path /> 上的参考没有“getTotalLength()”方法

我想创建一个渲染 SVG 路径元素的组件,如下所示:

class Path extends Component {
  constructor(props) {
    super(props);

    this.refCallback = this.refCallback.bind(this);
  }

  refCallback(element) {
    console.log("Element: ", element, element.getTotalLength());
  }

  render() {
    const { data, id } = this.props

    return (
      <path d={ data } id={ id } ref={ this.refCallback } />
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望获取路径的 DOM 节点,然后对其使用“getTotalLength()”方法。但我在控制台中得到路径元素的以下输出:

Element: <path d="M11.859375,0.88671875 C9.10229798,32.1448978 3.72401281,62.1847019 0.921875,92.3632812" id="Path"></path>
Run Code Online (Sandbox Code Playgroud)

对于“element.getTotalLength()”:

Uncaught TypeError: element.getTotalLength is not a function
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它会这样。我期望获取 DOM 元素并使用“getTotalLength()”。

有谁知道我做错了什么?

svg dom reactjs

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

JEST 样式组件 - toHaveStyleRule 未找到属性

我正在尝试测试我的样式组件。因此我安装了jest-styled-components.

我想测试我的组件在单击后是否改变不透明度。

我试过了toHaveStyleRule。但它说:

Property not found: "opacity"
Run Code Online (Sandbox Code Playgroud)

这是我的样式组件:

const ClueAnswer = styled.h3`
  transition: opacity 1s;
  transition-timing-function: ${props => props.reveal ? 'ease-out' : 'ease-in' };
  opacity: ${props => props.reveal ? 1 : 0};
  cursor: pointer;
`;
ClueAnswer.displayName = 'ClueAnswer';
export { ClueAnswer };
Run Code Online (Sandbox Code Playgroud)

我在这里导入它:

// Vendor
import React, { Component } from 'react';
// Styled Components
import {
  ClueAnswer,
  ClueWrapper
} from '../style/general';

class Clue extends Component {
  constructor(props) {
    super(props);

    this.state = {
      reveal: false
    }; …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs enzyme styled-components

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

reduxForm - 更新后的initialValues不适用

我使用Redux表单版本6.8.0.

我有一个表单组件,它通过"mapStateToProps"函数得到它的"initialValues".在第一次渲染时,一切都很好.

在我的表单配置之后:

const CategoryChangeForm = reduxForm({
  form: 'change-category',
  validate: newCategoryValidate,
  enableReinitialize: true
})(CategoryChange);
Run Code Online (Sandbox Code Playgroud)

当我更改字段"类别"并且更新成功时,我从firebase接收新的更新值.我通过提到的"mapStateToProps"函数将此更新值传递给"initialValues":

function mapStateToProps(state, ownProps) {
    return {
    initialValues: { category: state.categories[ownProps.id].name, id: ownProps.id }
  };
}
Run Code Online (Sandbox Code Playgroud)

预计新值将应用于"类别"-Field组件.但它没有获得更新的价值.

我的"Field"组件的配置:

const fieldProps = {
  category: {
    name: 'category',
    type: 'text',
    placeholder: 'Bezeichnung',
    component: InputField
  },
  hidden: {
    name: 'id',
    type: 'hidden',
    component: 'input'
  }
};
Run Code Online (Sandbox Code Playgroud)

这是我的表单组件:

export const CategoryChange = props => {
  const {
    color,
    message,
    handleSubmit,
    stateComponent
  } = props;

  console.log("Props: ", props);

  return …
Run Code Online (Sandbox Code Playgroud)

render reactjs redux-form

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

标签 统计

reactjs ×3

dom ×1

enzyme ×1

jestjs ×1

redux-form ×1

render ×1

styled-components ×1

svg ×1