小编Dre*_*ese的帖子

RTK查询中如何将数据保存到localStorage中?

我想创建一个购物车,其中包含用户添加的产品列表并将其保存在 localStorage 中。如果我们有 RTK 查询的代码,是否可以在 createApi() 中定义该购物车?如果没有,我怎样才能在另一个切片中使用它?

export const productApi = createApi({
  reducerPath: "productApi",
  baseQuery: fetchBaseQuery({ baseUrl: "http://127.0.0.1:8000/api/" }),
  tagTypes: ["Products"],
  endpoints: (builder) => ({
    SingleProduct: builder.query<IProduct, number>({
      query: (id) => `product/${id}/`,
      providesTags: (result, error, id) => [{ type: "Products", id }],
    }),
  }),
});
Run Code Online (Sandbox Code Playgroud)

如果无法直接将购物车操作添加到 createApi,我如何提取 SingleProduct 并在此切片中使用它?

const cartSlice = createSlice({
  name: "cart",
  initialState,
  reducers: {
    addToCart: (state, action: PayloadAction<{ id: number, qty: number }>) => {
      const data = // what should i put here?
      state.push(data);

      localStorage.setItem("cartItems", …
Run Code Online (Sandbox Code Playgroud)

reactjs redux-toolkit rtk-query

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

如何使用 useHistory 将状态传递给另一个组件?

我需要将状态从 useState 挂钩传递到另一个组件,但它们之间的唯一连接是一个具有 onClick 历史记录函数的按钮。推(路线)。

\n

表页面(从该页面我必须将状态发送到下面的 TableMore 页面)

\n
import React, { useState, useEffect } from "react";\nimport { useTable, usePagination } from "react-table";\nimport { useHistory } from "react-router-dom";\nimport styled from "styled-components";\nimport apiRequest from "helpers/apiRequest";\nimport Header from "../../../components/Header/Header";\n\nfunction Table({ columns, data, searchData, setsearchData, getData }) {\n  // Use the state and functions returned from useTable to build your UI\n  const {\n    getTableProps,\n    getTableBodyProps,\n    headerGroups,\n    prepareRow,\n    page, // Instead of using 'rows', we'll use page,\n    // which has only the rows …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router

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

更改后 React 重新加载 .env 变量

在我的 React 应用程序中,我有一个 .env 文件,每次更改它们时,我都看不到更改,直到我停止并再次 npm start 是否有更快的方法?

environment-variables reactjs

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

如何使用react-testing-library和jest测试链接

正在努力学习测试。使用测试库、Jest、React-Router v6 和 Typescript。我正在尝试找出如何测试链接。我一直在到处寻找解决方案,但找不到。使用 React-Router v6。代码如下所示(链接只是带有 href 的常规元素),只是想确保用户到达新页面(在本例中是来自忘记密码页面的登录页面)。

//omitted imports but imported all appropriate items from below

describe('ForgotPassword', () => {
  test('User can navigate to login screen', async () => {
    render(
      <MemoryRouter initialEntries={['/forgot-password' ]}>
        <ForgotPassword />
      </MemoryRouter>)

    userEvent.click(screen.getByRole('link', { name: 'Back to Login' }))

    await waitFor(() => {
      expect(screen.getByRole('heading', { name: 'Login' })).toBeInTheDocument()
    })
  })

//also tried:

describe('ForgotPassword', () => {
  test('User can navigate to login screen', async () => {
    render(
      <MemoryRouter initialEntries={['/forgot-password' ]}>
        <Routes>
            <Route path='/forgot-password' component={<ForgotPassword …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs react-router-dom react-testing-library

5
推荐指数
2
解决办法
2万
查看次数

无法读取未定义的属性(读取“originalPositionFor”)

我是一个反应初学者,刚刚开始主题react-router-dom教程。首先,我使用安装了react-router-dom, npm i react-router-dom 然后在app.js中,我使用函数标头中的默认代码,并在react-router-dom结构中调用此元素:

import logo from './logo.svg';
import './App.css';
import {  BrowserRouter as Router,Routes,Route} from "react-router-dom";

function App() {
  return (
    <Router>
    <Routes>
      <Route path="/" element={<Header />} />
    </Routes>
  </Router>
  );
}
export default App;
function Header(){
  return(
    <div className="App">
  <header className="App-header">
    <img src={logo} className="App-logo" alt="logo" />
    <p>Edit <code>src/App.js</code> and save to reload.</p>
    <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer">
      Learn React
    </a>
  </header>
</div>
  );
  
}
Run Code Online (Sandbox Code Playgroud)

当我使用启动服务器时npm start出现此错误:

log.js:59 Uncaught Error: Module build failed (from ./node_modules/babel-loader/lib/index.js): …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs babeljs

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

React.js 中的路由器和重定向

我是反应初学者。我正在尝试设置路由器和渲染来更改页面,但它给了我我无法理解的错误。

我已经安装到npm install react-router-dom 我的终端index.js我已经导入BrowserRouter并嵌入了我的应用程序

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import {BrowserRouter} from "react-router-dom"

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </React.StrictMode>,
  document.getElementById('root')
);
reportWebVitals();
Run Code Online (Sandbox Code Playgroud)

在我的文件中,app.js我有从 导入路由开关react-router-dom

import Home from './page/home';
import Authentication from "./page/authentication";
import Header from './componenti/header';
import './App.css';
import DashboardComponent from './page/dashboardComponent';
import {Route, Switch} from "react-router-dom"

function App(props) {
  return (
    <div>
      <Header/>
      <Switch>        
          <Route …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-dom

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

执行用户操作后使用react-router-dom v6导航

大约 15 天前我开始学习 React。以下代码正确添加帖子,但不重定向到“/”。我正在使用react-router-dom v6。

render(){
  return <div>
              <Routes>
                <Route exact path="/" element={
                      <div>
                      <Title title={'Arijit - Photowall'}/>   
                        <Photowall posts={this.state.posts} onRemovePhoto={this.removePhoto} /> 

                      </div>

      } >
                          </Route>
                    <Route path="/addPhotos" element={ 
                     
                    <AddPhoto onAddPhoto={(addedPost)=>{
          
                      this.addPhoto(addedPost)
                      
                      
                      }}
                      
                      >
                        <Navigate to="/" />
                      </AddPhoto>
                      
                     }/>
                  </Routes>
        </div>
}
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-dom

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

在 RTK 查询中按顺序执行多个突变的推荐方法是什么?

建议使用哪种方式使用 RTK 查询按顺序执行多个突变?

  const [
    updateProfile, 
  ] = useUpdateProfileMutation();

  const [
    updatePost,
  ] = useUpdatePostMutation();


  const performMutipleMuations = async () => {
    const data= await updateProfile(newData);
    await updatePost(data);
  };



Run Code Online (Sandbox Code Playgroud)

rtk-query

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

在react-router中useParams()为空

我正在尝试将 url 中的参数渲染为网站中的 h2 。但即使当我尝试 console.log useParams 也是空的。

这是我的 Router.js 文件

const Webpages = () => {
    return (
        <Router>
            <Routes>
                <Route exact path="/" element={Home()} />
                <Route exact path="/comics" element={Comics()} />
                <Route path='/comics/:comicId' element={Comic()} />  <--------------
                <Route exact path="/portfolio" element={Portfolio()} />
                <Route exact path="/blog" element={Blog()} />
                <Route exact path="/contact" element={Contact()} />
                <Route exact path="/store" element={Store()} />
                <Route path="*" element={NotFound()} />
            </Routes>
        </Router>
    );
};

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

这是我的漫画组件

import React from 'react';
import NavBar from '../../components/NavBar';
import { useParams } …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router react-router-dom

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

redux-toolkit 中的dispatch(..).unwrap() 是什么?

来自 redux 教程:

const onSavePostClicked = async () => {
  if (canSave) {
    try {
      setAddRequestStatus('pending')
      await dispatch(addNewPost({ title, content, user: userId }))
        .unwrap()
    } catch (err) {
      console.error('Failed to save the post: ', err)
    } finally {
      setAddRequestStatus('idle')
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

据我了解dispatch(addNewPost({ title, content, user: userId }))会返回这样的承诺:

const onSavePostClicked = async () => {
  if (canSave) {
    try {
      setAddRequestStatus('pending')
      await dispatch(addNewPost({ title, content, user: userId }))
        .unwrap()
    } catch (err) {
      console.error('Failed to save the post: …
Run Code Online (Sandbox Code Playgroud)

javascript redux redux-toolkit

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