Redux: 那裁判呢?

创建于 2015-06-27  ·  8评论  ·  资料来源: reduxjs/redux

如果在某些具有ref属性的组件周围使用<Connector> ,则无法再通过this.refs访问它。 我只是重构了一下以解决它-我猜想这有点白费智能组件和笨拙组件。 还是我缺少一些简单的东西?

help wanted question

最有用的评论

抱歉,但我看不出在这种琐碎的情况下如何鼓励使用'findDOMNode'甚至可以被视为解决方案。 这是反模式! 它使我们返回到jquery的日子,在这里我们需要访问所有元素并确切知道节点的层次结构。 您的文档正确阅读:

'findDOMNode()是一个逃生舱口...不建议使用此逃生舱口,因为它刺穿了组件抽象'

所有8条评论

智能与哑组件

我想是的,带有Connector _smart_组件应该只渲染_dumb_组件并将所需的props传递给它们。

@cymen,您可以为此使用ref回调:)

const decorator = (Base) => {
  return class {
    render() {
      return <Base {...this.props} />
    }
  }
}

<strong i="7">@decorator</strong>
class Test {

  render () {
    return <div ref={this.props.refCallback}>my div</div>;
  }

}


class Wrapper {

  componentWillMount() {
    this.nestedRef = null;
  }

  componentDidMount() {
    console.log(React.findDOMNode(this.nestedRef));
  }

  setNestedRef = (ref) => {
    this.nestedRef = ref;
  }

  render() {
    return <Test refCallback={this.setNestedRef} />
  }
}

上面将记录div。 也许有帮助吗?

这使用了一个装饰器,但是如果您将回调传递给嵌套在Connector内的组件,则可能也可以正常工作。 然后,您可以在回调内部将引用分配回您的组件。

您是否真的需要嵌套引用?

如果只想访问DOM节点,则可以在外部组件上执行findDOMNode ,它会正常工作。 (它们将指向同一节点。)

如果要调用方法,请考虑使用props作为声明性接口。 另请参阅https://github.com/jsstyles/react-jss/issues/15以获得有关此内容的讨论。

最后,如果你是_certain_你需要一个裁判,是的,你可以抓住一个嵌套的裁判一样@johanneslumpe中建议https://github.com/gaearon/redux/issues/183#issuecomment -115988937。

结束语,如果有不清楚的地方,请告诉我。

抱歉,但我看不出在这种琐碎的情况下如何鼓励使用'findDOMNode'甚至可以被视为解决方案。 这是反模式! 它使我们返回到jquery的日子,在这里我们需要访问所有元素并确切知道节点的层次结构。 您的文档正确阅读:

'findDOMNode()是一个逃生舱口...不建议使用此逃生舱口,因为它刺穿了组件抽象'

抱歉,但我看不出在这种琐碎的情况下如何鼓励使用'findDOMNode'甚至可以被视为解决方案。 这是反模式! 它使我们返回到jquery的日子,在这里我们需要访问所有元素并确切知道节点的层次结构。

我不确定你是什么意思。 我的意思是,如果需要引用渲染的节点(例如,计算其偏移量和大小),则可以使用findDOMNode(this) 。 我不建议您“深入”或变异它。

也就是说,如果您对此不满意,请按照上面的建议使用ref回调道具。

我认为我们不应该依赖findDOMNode(this) ,因为它不适用于React-Native。

@xvalentino findDOMNode不是必需的。 请参阅API文档中getWrappedInstance相关的位。

此页面是否有帮助?
0 / 5 - 0 等级