小编pre*_*ast的帖子

如何使用 React js context api 正确存储和检索数据?我的代码没有按预期工作

我正在学习反应。我试图在从 api 端点获取数据并将其存储在上下文中后存储用户信息。问题是我必须在每个网页中执行该功能才能访问其中存储的信息。我尝试useEffect在 App.js 中使用来获取数据并在标题和侧边栏中使用它,但它仅在该文件中有效。

我有路由器,因为我的网站有多个页面。限制数据存储在上下文中的代码是否存在任何问题,以及如何使用路由器正确执行此操作。

这些是我的代码,

减速器.js

export const initialState = {
user: null,
};

export const actionTypes = {
    SET_USER: 'SET_USER',
};

const reducer = (state, action) => {
    // console.log(action);
    switch (action.type) {
        case actionTypes.SET_USER:
            return {
                ...state,
                user: action.user,
            };

        default:
            return state;
    }
};


export default reducer;
Run Code Online (Sandbox Code Playgroud)

状态提供者.js

import React, { createContext, useContext, useReducer } from 'react';

export const StateContext = createContext();

export const StateProvider = ({ reducer, initialState, children }) => ( …
Run Code Online (Sandbox Code Playgroud)

javascript jsx reactjs react-native react-context

5
推荐指数
1
解决办法
3071
查看次数

React:如何使用 React Hooks 提交带有 Enter 键且没有提交按钮的表单?

晕,伙计们,我对反应还很陌生,我想提交一个只有文本区域和enter按键的表单。我遵循了一些SO问题,但仍然没有运气,因为它没有被提交。我还想在提交后清除文本区域。我怎样才能用下面的代码做到这一点?

这是我目前拥有的代码。

const { register, handleSubmit, control, errors } = useForm();

const CommentOnSubmit = (data) => {
    let formData = new FormData();

    formData.append('content', data.content);
    formData.append('user', user?.id);

    axiosInstance.post(`api/blogs/` + slug + `/comment/`, formData);
} ;

// const commentEnterSubmit = (e) => {
//     if(e.key === 'Enter' && e.shiftKey == false) {
//         return(
//             e.preventDefault(),
//             CommentOnSubmit()
//         )
//     }
//   }

<form noValidate onSubmit={handleSubmit(CommentOnSubmit)}>
                <div className="post_comment_input">
                    <textarea
                        type="text" 
                        placeholder="Write a comment..."
                        name="content"
                        ref={register({required: true, maxLength: 1000})}
                    /> …
Run Code Online (Sandbox Code Playgroud)

javascript rxjs reactjs react-native react-redux

5
推荐指数
1
解决办法
9539
查看次数

尝试在react js中显示上传图像的预览时出现图像为空的错误

我有这个功能可以上传多张图片并且它可以工作,现在我需要显示用户选择的所有图片的预览。我尝试使用mapforEach尝试循环并显示图像,但它不起作用。console.log(images)正在显示上传图片的 url,但images.map()images.ForEach正在抛出空错误。谁能告诉我这有什么问题?我是新手,所以需要一些帮助。

这是代码:

const fileObj = [];
const imageArray = [];
const [images, setImages] = useState(null); 

const uploadMultipleFiles = (e) => {
    if (e.target.name === 'images') {
        fileObj.push(e.target.files)
        for (let i = 0; i < fileObj[0].length; i++) {
            imageArray.push(URL.createObjectURL(fileObj[0][i]))
            // console.log(imageArray)
        }
        setImages({ images: imageArray })
    }
}

{console.log(images)}
<div className="form-group multi-preview">
  { {(imageArray || []).map(url => (
         <img src={url} alt="" />
      ))} 
  }
</div>
                    
 <label htmlFor="images">
      <input
         accept="image/*"
         className={classes.input} …
Run Code Online (Sandbox Code Playgroud)

javascript foreach rxjs reactjs react-native

4
推荐指数
1
解决办法
279
查看次数

如何使用 Django 通道将新创建的数据推送到客户端而不重新加载和不完全改变现有的普通视图代码

嘿伙计们,我对 django 和 django 频道很陌生。我有一个关于渠道的小疑问。例如,如果我有一个帖子模型并且我创建了一个帖子,为了让用户查看帖子,他们需要重新加载页面或者我们需要将他们重定向到列表页面以查看所有帖子。

如果我想将新创建的帖子推送到前端或客户端而不让他们重新加载页面怎么办?我们可以为此使用渠道吗?如果我们为此目的使用通道,我们是否需要重写我们在普通视图中编写的所有代码,或者添加一个片段代码,例如在创建和运行async函数时发送信号就可以解决问题?实施起来难吗?

谢谢

django django-models websocket django-rest-framework django-channels

2
推荐指数
1
解决办法
501
查看次数