2017-11-11 13 views
0

私は非常に新しいです還元し、私は基本的なロックペーパーはさみのアプリケーションを作成しました。しかし、私はどのように関数を渡すか分からない。ユーザーインターフェイスは以下の通りです:還元機能を送信

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' 

]);アプリ

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

しかし、それはまた、あなたが通過せずに{props.comWins()}としてそれを呼び出すことができますnot defined error

を与えている理由です{comWins};

を使用しようとしてcomWinsを渡していません

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

}); 


export {actionTypes, 
    userWins, 
    computerWins} 
+0

還元剤はありますか?それを私たちに見せてもらえますか?それはゲームの勝者を決定し、それに応じて状態を更新する論理を持つ減速機でなければなりません。また、{{comWins} 'は奇妙な表現であると思われ、それが未定義になっています。 –

+0

私は今それを追加しました!ありがとうございました! – Nespony

答えて

0

アプリ内で

+0

未定義のエラーが修正されました(ありがとうございました!)しかし、コンピュータが勝ったときに実際にcomWins関数を呼び出す方法はわかりません!ありがとう – Nespony

+0

あなたはコンピュータwins.Itがあなたのアクションファイルに存在する必要があるときに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が取得されています! – Nespony