[英]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.