Reactjs 无法在redux中分派函数调用

Reactjs 无法在redux中分派函数调用,reactjs,redux,Reactjs,Redux,我是redux新手,在执行下面的示例时,我无法按预期渲染输出 App.js import React from 'react'; import { Provider } from 'react-redux'; import store from './store'; import CakeContainer from './CakeContainer' function App(props) { return ( <P

我是redux新手,在执行下面的示例时,我无法按预期渲染输出

App.js

 import React from 'react';
    import { Provider } from 'react-redux';
    import store from './store';
    import CakeContainer from './CakeContainer'
    
    function App(props) {
      return (
        <Provider store={store}>
         <CakeContainer />
        </Provider>
      );
    }
    
    export default App;
CakeContainer.js

import React from 'react';
import { connect } from 'react-redux';

function CakeContainer(props) {
    return <div>
            {props.buycake}
            <h1>Store cakes:{props.cake}</h1>
            </div> ;
}
const mapStateToProps= state =>{
    return {
        cake: state.cake
    }
}
const mapDispatchToProps= dispatch =>{
    return {
        buycake: () => dispatch({type:'BUY_CAKE'} )
    }
}
export default connect(mapStateToProps,mapDispatchToProps) (CakeContainer);
从“React”导入React;
从'react redux'导入{connect};
功能容器(道具){
返回
{props.buycake}
商店蛋糕:{props.cake}
;
}
常量mapStateToProps=状态=>{
返回{
蛋糕:国家蛋糕
}
}
const mapDispatchToProps=调度=>{
返回{
buycake:()=>分派({类型:'BUY_CAKE'})
}
}
导出默认连接(mapStateToProps、mapDispatchToProps)(CakeContainer);
控制台显示警告如下:函数作为子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者你是想调用这个函数而不是返回它

有谁能帮我解释一下为什么这里不呈现buycake(),输出总是cake:10而不是cake:5

{props.buycake}
此行试图在屏幕上呈现函数。这是不可能的,并且会导致您看到的错误。你可能想调用这个函数,但我不确定什么时候。假设您希望在单击按钮时执行此操作,它可能如下所示:

function CakeContainer(props) {
  return (
    <div>
      <button onClick={props.buycake}>Click Me</button>
      <h1>Store cakes:{props.cake}</h1>
    </div>
  );
}
功能容器(道具){
返回(
点击我
商店蛋糕:{props.cake}
);
}

用例“BUY_CAKE”:不是这个例子“BUY_CAKE”:谢谢……它起作用了,我以为它会在页面加载期间调用{props.buyCake}。
function CakeContainer(props) {
  return (
    <div>
      <button onClick={props.buycake}>Click Me</button>
      <h1>Store cakes:{props.cake}</h1>
    </div>
  );
}