Javascript 在呈现React类后,如何在该类中使用自定义函数?

Javascript 在呈现React类后,如何在该类中使用自定义函数?,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,假设我在我的React组件中创建了其他函数,如下所示: class Cart extends React.Component { render() { return <div id="cart">My Cart Items</div> } getItem(id) { // magically return the item } addItem(id, name, type, price){

假设我在我的React组件中创建了其他函数,如下所示:

class Cart extends React.Component {
    render() {
       return <div id="cart">My Cart Items</div>
    }
    getItem(id) {
       // magically return the item
    }
    addItem(id, name, type, price){
       // you get the idea
    }
}
类购物车扩展了React.Component{
render(){
归还我的购物车项目
}
getItem(id){
//神奇地归还物品
}
附加项(id、名称、类型、价格){
//你明白了吗
}
}
现在,从类外访问
getItem
函数的最佳方式是什么?例如,可以用作
window.Cart.getItem
的东西。在我看来,这些函数是
ReactDOM.render
返回的
nodeName
属性的
原型(未初始化)的一部分


正确的方法是什么?谢谢。

您可以引用实例:)


window.CartInstance.getItem(foo);
ES6

<Cart ref={(instance)=>window.CartInstance = instance} />

window.CartInstance.getItem(foo);
window.CartInstance=instance}/>
window.CartInstance.getItem(foo);

您可以引用实例:)


window.CartInstance.getItem(foo);
ES6

<Cart ref={(instance)=>window.CartInstance = instance} />

window.CartInstance.getItem(foo);
window.CartInstance=instance}/>
window.CartInstance.getItem(foo);

这并不是react的实际用法。
您尝试做的事情看起来像MVC,而react则完全不同

  • 像您的
    这样的React组件从其父级接收道具(可以是根
    reactDOM.render()
    或另一个React组件)
  • React组件可能具有内部和私有方法,用于从其他位置(但不是从其他React组件)检索附加数据
  • 有了这些输入(并且只有这些输入),组件知道如何将自己和子组件呈现给DOM
  • 组件(或其子组件)呈现的内容可能包括交互处理程序(例如,从购物车中移除按钮)`
  • 这些交互可以在组件内部触发一个内部方法
  • 内部方法可以调用父组件中的方法,如果该方法作为道具传递
  • 或者调用一些远程函数从服务器端的购物车中删除项目
就react而言,
组件不是购物车内容的所有者。它将购物车内容作为道具获取,或者从其他地方检索它们。
React确实希望您只通过向要渲染的组件传递一组新的道具来更新购物车

您可以尝试通过将组件中的任何方法公开给外部世界来简化react设计,但这违反了react设计原则。
React具有单向数据流:组件获取道具并渲染


作为参考,我可以推荐react原则。

这并不是react应该使用的方式。
您尝试做的事情看起来像MVC,而react则完全不同

  • 像您的
    这样的React组件从其父级接收道具(可以是根
    reactDOM.render()
    或另一个React组件)
  • React组件可能具有内部和私有方法,用于从其他位置(但不是从其他React组件)检索附加数据
  • 有了这些输入(并且只有这些输入),组件知道如何将自己和子组件呈现给DOM
  • 组件(或其子组件)呈现的内容可能包括交互处理程序(例如,从购物车中移除按钮)`
  • 这些交互可以在组件内部触发一个内部方法
  • 内部方法可以调用父组件中的方法,如果该方法作为道具传递
  • 或者调用一些远程函数从服务器端的购物车中删除项目
就react而言,
组件不是购物车内容的所有者。它将购物车内容作为道具获取,或者从其他地方检索它们。
React确实希望您只通过向要渲染的组件传递一组新的道具来更新购物车

您可以尝试通过将组件中的任何方法公开给外部世界来简化react设计,但这违反了react设计原则。
React具有单向数据流:组件获取道具并渲染


作为参考,我可以推荐react原则。

我认为这不可行:带有这些方法的实例是react虚拟DOM中的一个javascript对象。这与真实DOM中的HTML节点不同。即使它可以工作,像这样破坏react的单向数据流也是一个非常糟糕的主意。它可以按照他的意愿工作,而另一点是,它在架构上是智能的。他应该在处理应用程序状态时真正关注redux或flux。不知道这一点,但很高兴知道(尽管我仍然认为“应该在家里试试这个”的建议是合适的)。完全同意flux或redux是有用的。这确实有效。但因为你们两人都认为它在架构上不好,我将研究redux和flux。任何其他建议都将不胜感激。Egghead上有一个关于redux的免费课程,您可以查看:。这可能需要几天的时间根据您的经验,总结您的想法并开始运行,但是React+Redux对于此类开发来说是一个非常强大的组合。我不认为这会起作用:带有方法的实例是React的虚拟DOM中的javascript对象。这与真实DOM中的HTML节点不是同一个元素。即使它会起作用,它也是一个版本像这样破坏react的单向数据流不是一个好主意。它可以按照他的意愿工作,在架构上是否智能是另一个问题。在处理应用程序状态时,他真的应该关注redux或flux。我不知道这一点,但很高兴知道(尽管我仍然认为“应该在家尝试这个”的建议是合适的).完全同意flux或redux是有用的。这确实有效。但是b