آفلاین
user-avatar

مشکل در اجرای اکشن در redux

2 سال پیش
توسط Hanan Farahdel آپدیت شد
آفلاین
user-avatar
Hanan Farahdel ( 1505 تجربه )
2 سال پیش

با سلام
بنده تازه کار با ری اکت و ری داکس رو شروع کردم و اولین پروژمو دارم سعی میکنم اجرا کنم،لطفا کمکم کنید

اکشن رو به اینصورت ایجاد کردم

    export const SetOnlineUser=(_apiKey)=>({
        type:SET_ONLINRUSER,
        apiKey:apiKey
    });

این هم reducer

    const UserOprations = (state=[],action)=>{
        switch(action.type){
            case SET_ONLINRUSER:
                return[
                    ...state,
                    {OnlineUser:{
                        apiKey:action.apiKey
                    }}
                ]
            case GET_ONLINRUSER:
            return[
                state.OnlineUser
            ]
            default:
                return state;
        }
    };

reducer هارو هم به اینصورت ecombin کردم

    const reducers = combineReducers({  
    userOprations  
    });

    export default reducers;

این هم store

import { createStore } from 'redux';
import reducers from './Reducers/ReducerCombiner';
const Store = createStore(reducers);
export default Store;

این هم کدی که از کامپونت میخوام به ری داکس دسترسی پیدا کنم

class Starter extends Component {
    componentDidMount(){
        const {onTodoClick,OnlineUser } = this.props;
        () => onTodoClick("test api");
        setTimeout(() => {
            console.log(OnlineUser); 
        }, 1000);
    }
    onClick(){
        const {onTodoClick,OnlineUser } = this.props;
        () => onTodoClick("testApi");
        setTimeout(() => {
            console.log(OnlineUser); 
        }, 1000);
    }
    render() {
        const { component : Component ,...restProps } = this.props;
        return(
            <div>
                <button onClick={this.onClick.bind(this)}>Click On Me</button>
            </div>
        );

    }
}
const mapStateToProps = (state) => ({
    OnlineUser : state
});
const mapDispatchToProps = (dispatch) => {
    return {
        onTodoClick : (key) => {
            dispatch(SetOnlineUser(key))
        }
    }
 };
export default connect(mapStateToProps,mapDispatchToProps)(Starter);

ولی الان وقتی روی باتن کلیک میکنم props پروپ رو خالی برمیگردونه

آفلاین
user-avatar
Amin Khademian ( 963 تجربه )
2 سال پیش
تخصص : Front-End Developer

تو همون خط اول یه اشتباه syntax ی دارین :

export const SetOnlineUser=(_apiKey)=>({
        type:SET_ONLINRUSER,
        apiKey:apiKey
    });

به این شکل بنویسید :

export const SetOnlineUser=(apiKey)=>({
        type:SET_ONLINRUSER,
        apiKey
    });
آفلاین
user-avatar
Hanan Farahdel ( 1505 تجربه )
2 سال پیش

ممنون
مشکل حل شد حالا یه مشکل دیگه دارم
اینکه وقتی تویه پیج لاگین یکی از اکشن هارو صدا میزنم و اطلاعات رو بهش میدم تو استیت ثبت میشه و وارد سایت میشم اطلاعات استیت رو میگیرم و بدرستی نشون میده ولی وقتی دوباره صفحه رو رفرش میکنم اطلاعات پاک میشه

برای ارسال پاسخ باید وارد سایت شوید