在React组件中,我们从REST api(比如说Car)接收一个对象,允许用户进行更改,并最终保存结果。
为此,我们创建了一个自定义的react钩子来接收状态。一个示例可能如下所示:
type Car = {
brand: string,
color: string
}
type Props = {
// A service that handles cars
service: Service<Car>
}
function CarEditor(service: Service<Car>) {
const { loading, error, resourceState } = useService(service);
return <form>
<input value={resourceState.brand} />
<input value={resourceState.color} />
</form>;
}
在上面的示例中,resourceState
的类型为Car
。
我正在为如何对这辆车进行修改而苦苦挣扎。一种想法是,我们使用对setState
的调用来对该对象进行管理:
function CarEditor(service: Service<Car>) {
const { loading, error, resourceState } = useService(service);
const [ car, updateCar ] = useState(resourceState);
return <form>
<input value={resourceState.brand} />
<input value={resourceState.color} />
</form>;
}
注意:为简洁起见,我省略了事件处理程序
问题:
Car
的每个属性使用1个对useState的调用。对于复杂的对象,这似乎是很多重复,但是我担心使用整个对象是一种反模式。useService
调用相比,updateResourceState
本身公开一个useState
函数并完全包含Car的状态会更好吗? li>
这一切都是新事物,我正在尝试以遵循最佳实践的方式来设计它,并且对就职的React开发人员而言,惊喜最小。
答案 0 :(得分:3)
public function handle()
{
$datedi = Periodicity::select('pamatrixinf.dateen')
->where('pamatrixinf.cod_paperiodicity', '=', 1)
->first();
$now = Carbon::now();
if ($datedi->dateen < $now) {
pamatrixinf::where('read_at', 1)
->where('cod_paperiodicity', 1)
->update(['read_at' => 0]);
pamatrixinf::where('dateen','<', $now)
->update(['dateen' => 'dateen'->addDay()]);
}
}
。并且您的nlp = stanza.Pipeline(lang='zh', processors='tokenize')
Stanza_doc_open = open('Stanza_No_Tags.txt', 'r').read()
doc = nlp(Stanza_doc_open)
for i, sentence in doc.sentences:
print(f'====== Sentence {i+1} =======', file=open('Stanza_Tokenized.txt', 'a'))
类型为useReducer
一点也不复杂。resourceState
。如果将Car
作为状态存储在useService
中,则只需在resourceState
中进行更新useService
函数并在resourceState
组件中调用它,就可以了而且易于维护。