Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MapStateTops中的If-then语句_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript MapStateTops中的If-then语句

Javascript MapStateTops中的If-then语句,javascript,reactjs,redux,Javascript,Reactjs,Redux,我想知道是否有一种方法可以在给定prop信息的mapStateToProps中有条件地返回状态值。请参阅下面的一些示例代码。我遇到一些意外的解析错误。有没有办法做到这一点?谢谢 const mapStateToProps = (state, ownProps) => ( if (ownProps.name === "alpha") { return { data: state.alpha.data } } else if (ownProps.name =

我想知道是否有一种方法可以在给定prop信息的mapStateToProps中有条件地返回状态值。请参阅下面的一些示例代码。我遇到一些意外的解析错误。有没有办法做到这一点?谢谢

const mapStateToProps = (state, ownProps) => (
  if (ownProps.name === "alpha") {
    return {
      data: state.alpha.data
    }
  } else if (ownProps.name === "beta") {
    return {
      data: state.beta.data    
    }
  } else {
    return null;
  }
);

是的,您可以,您只需要将其作为一个普通函数编写,并使用大括号而不是立即返回表达式的括号。

您可以像这样使用JavaScript:

const-mapStateToProps=(state,ownProps)=>{
开关(ownProps.name){
案例“alpha”:
返回{
数据:state.alpha.data
};
案例“beta”:
返回{
数据:state.beta.data
};
违约:
返回null;
}

};我建议使用选择器模式,而不是直接插入逻辑

selectorName(state, name) {
    if (name === 'alpha') return state.alpha.data
    else if (name === 'beta') return state.beta.data
    else return null
}
然后在MapStateTops中:

const mapStateToProps = (state, ownProps) => {
    return { data: selectorName(state, ownProps.name) }
}

它有助于减少潜在的错误,并使单元测试更容易。作为额外的奖励,数据属性将不会为null,而不是整个属性。

块范围的大括号…它很可能只是
而不是
{
,而不是它抱怨的函数体。
const-mapStateToProps=(state,ownProps)=>{…};