简体   繁体   English

移动的组件不工作(react-redux)

[英]moved component doesn't do its work (react-redux)

when I move my component to a separate file it won't work.当我将我的组件移动到一个单独的文件时,它将无法工作。

I use redux and react我使用 redux 并做出反应
code sand box link: https://codesandbox.io/s/adoring-water-l35zj?fontsize=14&hidenavigation=1&theme=dark代码沙盒链接: https : //codesandbox.io/s/adoring-water-l35zj?fontsize=14&hidenavigation=1&theme=dark

this code will work:此代码将工作:

import React, { useState } from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import configStore from "./store/store";
import { addTodo } from "./store/store";

const App = () => {
  const [note, setNote] = useState("");
  const [error, setError] = useState(false);

  return (
    <div>
      <div>
        <input
          type={"text"}
          value={note}
          onChange={e => {
            setNote(e.target.value);
          }}
        />
        <button
          onClick={() => {
            if (note !== "") {
              store.dispatch(addTodo(note));
              setNote("");
              setError(false);
            } else {
              setError(true);
            }
          }}
        >
          SAVE
        </button>
        {error && <div>PLEASE ENTER A VALUE FOR TODO</div>}
        {store.getState().map(todo => {
          return <div key={todo.id}>{todo.note}</div>;
        })}
      </div>
    </div>
  );
};

const store = configStore();
console.log(store.getState());
ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById("root")
);

but this won't work:(index.js)但这不起作用:(index.js)

import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import configStore from "./store/store";
import AddTodo from "./components/AddTodo";

const App = () => {
  return (
    <div>
      <AddTodo />
      {store.getState().map(todo => {
        return <div key={todo.id}>{todo.note}</div>;
      })}
    </div>
  );
};

const store = configStore();

console.log(store.getState());

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById("root")
);

(AddTodo.js): (AddTodo.js):

import React, { useState } from "react";
import { connect } from "react-redux";
import { addTodo } from "../store/store";

const AddTodo = props => {
  const [note, setNote] = useState("");
  const [error, setError] = useState(false);

  return (
    <div>
      <input
        type={"text"}
        value={note}
        onChange={e => {
          setNote(e.target.value);
        }}
      />
      <button
        onClick={() => {
          if (note !== "") {
            props.addTodos(note);
            setNote("");
            setError(false);
          } else {
            setError(true);
          }
        }}
      >
        SAVE
      </button>
      {error && <div>PLEASE ENTER A VALUE FOR TODO</div>}
    </div>
  );
};

const mapDispatchToProps = dispatch => ({
  addTodos: note => dispatch(addTodo(note))
});

export default connect(
  undefined,
  mapDispatchToProps
)(AddTodo);

I don't understand why this won't work.我不明白为什么这行不通。

I am a beginner to react and redux.我是反应和还原的初学者。 I am really happy to help me guys please answer我真的很乐意帮助我,请回答

I have created an example from your code and moved the App component in a separate file as well.我已经根据您的代码创建了一个示例,并将 App 组件也移到了单独的文件中。 Here is a link for the working code.这是工作代码的链接。

https://codesandbox.io/s/compassionate-golick-dbhww https://codesandbox.io/s/compassionate-golick-dbhww

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM