2017-11-11 106 views
0

我很新的REDX,我创建了一个基本的摇滚纸剪刀应用程序。但是我不确定如何传入一个函数。用户界面如下:发送REDX功能

let App = ({humanScore,computerScore,userWinsGame,computerWinsGame}) => { 

return (
    <div> 
     Human:{humanScore} 
     Computer: {computerScore} 
    <br/> 
    <button value='Rock' onClick={(e) => userChoice(e.target.value)} >Rock</button> 
    <button value='Paper' onClick={(e) => userChoice(e.target.value)} >Paper</button> 
    <button value='Scissors' onClick={(e) => userChoice(e.target.value)} >Scissors</button> 
    <button onClick={() => userWinsGame()} >UserWins</button> 
    <button onClick={() => computerWinsGame()} >ComputerWins</button> 
    </div> 
); 
}; 

的userChoice功能如下:

let userChoice = (userInput) => { 
    var computerInput = computerChoice(); 
    console.log("TEST" + userInput); 
    if (
     (userInput == 'Rock' && computerInput == 'Scissors')|| 
     (userInput == 'Paper' && computerInput == 'Rock') || 
     (userInput == 'Scissors' && computerInput == 'Paper') 
    ) { 
     {comWins}; 
     console.log('User chose ' + userInput + 'Computer chose ' + computerInput); 
    } else { 
     console.log('User chose ' + userInput + 'Computer chose ' + computerInput); 
    } 
    } 

和应用程序容器是这样的:

let AppContainer = connect(
state => ({ 
    humanScore: state.getIn(['data', 'users','human']), 
    computerScore: state.getIn(['data', 'users','computer']) 
}), 
dispatch => ({ 
    comWins:() => dispatch(computerWins()), 
    userWinsGame:() => dispatch(userWins()), 
    computerWinsGame:() => dispatch(computerWins()) 
}) 
)(App); 

不过,我不断收到消息“comWins '没有定义no-undef。对不起,不好的描述,但任何帮助将不胜感激!

减速器低于:

const initialState = fromJS({ 
    users: { 
    human: 0, 
    computer: 0 
    } 
}); 


const dataReducer = handleActions({ 
    [actionTypes.USER_WINS]: (state) => 
     state.setIn(['users','human'], 
state.getIn(['users','human'])+1), 
    [actionTypes.COMPUTER_WINS]: (state) => 
     state.setIn(['users','computer'],state.getIn(['users','computer'])+1), 
}, 
initialState); 

我的操作文件是这样的:

const actionTypes = mirrorKeyValue([ 
'USER_WINS', 
'COMPUTER_WINS' 

]);

const { 
userWins, 
computerWins, 
} = createActions({ 
[actionTypes.USER_WINS]:() => ({}), 
[actionTypes.COMPUTER_WINS]:() => ({}) 

}); 


export {actionTypes, 
    userWins, 
    computerWins} 
+0

你有减速机吗?你可以把它展示给我们吗?它应该是减速器谁有逻辑来确定谁赢了比赛并相应地更新状态。另外'{comWins}'似乎是一个奇怪的表达式,这就是你未定义的地方。 –

+0

我已经添加了!谢谢! – Nespony

回答

0

你不及格comWins在应用

let App = ({humanScore,computerScore,userWinsGame,computerWinsGame}) => { 

但试图利用{comWins};

这就是为什么它被赋予not defined error

你也可以把它作为{props.comWins()}不及格在App中。

+0

修复了未定义的错误(谢谢!),但我不清楚如何在计算机胜出时实际调用comWins函数!谢谢 – Nespony

+0

您在计算机胜出时正在调度computerWins()函数。它应该出现在您的动作文件中。您可以发布它吗? –

+0

我现在补充说,非常感谢:-) – Nespony

0
let App = ({humanScore,computerScore,userWinsGame,computerWinsGame}) => { 

return (
    <div> 
    //You are directly getting score here 
     Human:{humanScore} 
     Computer: {computerScore} 
    <br/> 
    <button value='Rock' onClick={(e) => userChoice(e.target.value)} >Rock</button> 
    <button value='Paper' onClick={(e) => userChoice(e.target.value)} >Paper</button> 
    <button value='Scissors' onClick={(e) => userChoice(e.target.value)} >Scissors</button> 
    //no need to call extra functions 
    </div> 
); 
}; 


let userChoice = (userInput) => { 
    var computerInput = computerChoice(); 
    console.log("TEST" + userInput); 
    if (
     (userInput == 'Rock' && computerInput == 'Scissors')|| 
     (userInput == 'Paper' && computerInput == 'Rock') || 
     (userInput == 'Scissors' && computerInput == 'Paper') 
    ) { 
     //calling user winning function here 
     {userWinsGame()}; 
     console.log('User chose ' + userInput + 'Computer chose ' + computerInput); 
    } else { 
     //calling computer wining function 
computerWinsGame() 

     console.log('User chose ' + userInput + 'Computer chose ' + computerInput); 
    } 
    } 
+0

谢谢,但我现在得到userWinsGame是undefined! – Nespony